@Override
 public Type getGenericType() {
   return projectionProperty.getGenericType();
 }
 @Override
 public Object getValue(Object target) {
   Object target0 = super.getValue(target);
   return target0 != null ? projectionProperty.getValue(target0) : null;
 }
 @SuppressWarnings("unchecked")
 @Override
 public Class<Object> getType() {
   return (Class<Object>) projectionProperty.getType();
 }