Depending on the subtype of the Property,
a different strategy for name resolution could be applied, defaulting to Property#getName(). For example:
if (property instanceof JavaBeanProperty) {
// for instance, generate a property name based on the annotations of the property
} else {
return property.getName();
}