code: private <T> T resolvePropertyTypedValueFromForeignResource(FieldData field, Class<T> propertyType) {
          Resource property = this.resource.getResourceResolver().getResource(this.resource, field.path);
          if (property == null) {
              return null;
          }
  
          // Only adaptation to String-types is supported by the property resource
          if (propertyType == String.class || propertyType == String[].class) {
              return property.adaptTo(propertyType);
          }
  
          // Obtain the ValueMap representation of the parent containing the property to use property conversion
          Resource parent = property.getParent();
          if (parent == null) {
              return null;
          }
  
          ValueMap properties = parent.adaptTo(ValueMap.class);
          if (properties == null) {
              return null;
          }
  
          return new PrimitiveSupportingValueMap(properties).get(property.getName(), propertyType);
      }
docs: Resolves a property via a property {@link Resource}. This is used to retrieve relative or absolute references to
  the properties of resources other than the current resource. Such references cannot be reliably retrieved using a
  resource's {@link ValueMap} as the value map may be <code>null</code> and does not support access to properties of parent resources.
  
  @return the resolved value, or <code>null</code>.