docs: private Object getAttributeRecursively(Object feature, String name) throws LayerException {
  		if (feature == null) {
  			return null;
  		}
  
  		// Split up properties: the first and the rest.
  		String[] properties = name.split(SEPARATOR_REGEXP, 2);
  		Object tempFeature;
  
  		// If the first property is the identifier:
  		if (properties[0].equals(getFeatureInfo().getIdentifier().getName())) {
  			tempFeature = getId(feature);
  		} else {
  			Entity entity = entityMapper.asEntity(feature);
  			HibernateEntity child = (HibernateEntity) entity.getChild(properties[0]);
  			tempFeature = child == null ? null : child.getObject();
  		}
  
  		// Detect if the first property is a collection (one-to-many):
  		if (tempFeature instanceof Collection<?>) {
  			Collection<?> features = (Collection<?>) tempFeature;
  			Object[] values = new Object[features.size()];
  			int count = 0;
  			for (Object value : features) {
  				if (properties.length == 1) {
  					values[count++] = value;
  				} else {
  					values[count++] = getAttributeRecursively(value, properties[1]);
  				}
  			}
  			return values;
  		} else { // Else first property is not a collection (one-to-many):
  			if (properties.length == 1 || tempFeature == null) {
  				return tempFeature;
  			} else {
  				return getAttributeRecursively(tempFeature, properties[1]);
  			}
  		}
  	}