code: private void visitComplexTypeWithDiff(final ObjectGraphNode node, final Object otherInstance) {
  		if (otherInstance == null) {
  			// Nothing to compare against, just use the default visit
  			visitComplexType(node);
  		} else {
  			Field[] fields = getAllInstanceFields(node.getValue());
  
  			for (int i = 0; i < fields.length; i++) {
  				Object fieldValue = readField(fields[i], node.getValue());
  				Object otherValue = readField(fields[i], otherInstance);
  				String fieldType = fields[i].getType().getName();
  				String nodeFieldName = fields[i].getName() + (Util.equals(fieldValue, otherValue) ? "" : "*");
  
  				ObjectGraphNode childNode = new ObjectGraphNode(++nodeCount, nodeFieldName,
  						fieldType, fieldValue);
  				node.add(childNode);
  				visit(childNode);
  			}
  		}
  	}
docs: Visits all the fields in the given complex object, noting differences.
  
  @param node the ObjectGraphNode containing the object.
  @param otherInstance the other instance to compare to