private static String readProperty(String ref, TypeDef source, Property property) {
TypeRef propertyTypeRef = property.getTypeRef();
Method getter = getterOf(source, property);
if (getter == null) {
return "null";
}
TypeRef getterTypeRef = getter.getReturnType();
if (propertyTypeRef.getDimensions() == getterTypeRef.getDimensions() && propertyTypeRef.isAssignableFrom(getterTypeRef)) {
return readObjectProperty(ref, source, property);
}
if (property.getTypeRef().getDimensions() > 0) {
return readArrayProperty(ref, source, property);
}
if (property.getTypeRef() instanceof ClassRef && ((ClassRef)getterTypeRef).getDefinition().isAnnotation()) {
return readAnnotationProperty(ref + "."+getter.getName()+"()", ((ClassRef) getterTypeRef).getDefinition(), property);
}
return readObjectProperty(ref, source, property);
}