In a Java object graph (a series of objects connected by pointers), you can have multiple pointers to the same object. For example, you can have a Department object with a list of Person objects and have a separate property for the manager that is also included in the list of Person objects. The manager's Person object appears in two different places, but it is a single object. When using Java objects as input, all Java objects are fully expanded in the structure definition even if they appear multiple times. This is to allow you to conveniently map from the object wherever it is. You can determine the unique identity of an object by looking at the id attribute of the root of the object's fields.
The only time an object is not expanded is if it would create a recursive loop. In the above example, suppose the Person object contains a pointer to its Department object. In this case, the Department object would not be expanded because it is an enclosing object of the Person object. It will appear without fields and with its id attribute referencing the enclosing Department object.