public Property getElementProperty(java.lang.reflect.Type type, String p, Property owner) {
String[] ps = p.split(ELEMENT_PROPERTY_SPLITTER, 2);
String elementPropertyExpression = ps[1].substring(0, ps[1].length() - 1);
Property owningProperty;
if (owner != null) {
if (type.equals(owner.getType())) {
owningProperty = owner;
} else {
owningProperty = getProperty(type, ps[0], false, owner);
}
} else {
owningProperty = getProperty(type, ps[0]);
}
Type<?> elementType;
Property elementProperty;
/*if (isIndividualElementExpression(elementPropertyExpression)) {
elementProperty = getProperty(owningProperty.getType(), elementPropertyExpression, false, owningProperty);
} else*/ if (owningProperty.isMap()) {
elementType = MapEntry.concreteEntryType((Type<Map<Object, Object>>) owningProperty.getType());
elementProperty = getProperty(elementType, elementPropertyExpression, false, owningProperty);