PropertyDescriptor pd = cd.getProperty(i);
String propPath = path + pd.getPropertyName();
if (pd instanceof SimplePropertyDescriptor) {
SimplePropertyDescriptor spd = (SimplePropertyDescriptor) pd;
Object v1 = spd.getValue(obj1);
Object v2 = spd.getValue(obj2);
if (v1 == null && v2 == null) {
// no difference
} else if (v1 == null && v2 != null) {
differences.add(new Difference(propPath, "LPD: missing in obj1 (" + v2 + ")"));
} else if (v1 != null && v2 == null) {
differences.add(new Difference(propPath, "LPD: missing in obj2 (" + v1 + ")"));
} else {
if (GEObject.class.isAssignableFrom(spd.getPropertyType())) {
getDifferences((GEObject) v1, (GEObject) v2, propPath + ".", differences);
} else {
if (!v1.equals(v2)) {
differences.add(new Difference(propPath, v1 + " != " + v2));
}