code: private Object resolveReferenceValueOfField(FieldData field) {
          Object value = null;
          // Regardless of its path, the field references another resource.
          // fetch the field value (the path(s) to the referenced resource(s)) and resolve these resources.
          if (field.metaData.isCollectionType()) {
              String[] referencedResourcePaths = resolvePropertyTypedValue(field, String[].class);
              if (referencedResourcePaths != null) {
                  value = createCollectionOfReferences(field, referencedResourcePaths);
              }
          } else {
              String referencedResourcePath = resolvePropertyTypedValue(field, String.class);
              if (referencedResourcePath != null) {
                  if (field.metaData.isAppendPathPresentOnReference()) {
                      referencedResourcePath += field.metaData.getAppendPathOnReference();
                  }
                  value = resolveResource(referencedResourcePath, field.metaData.getType());
              }
          }
          return value;
      }
docs: Resolves the String path(s) stored in the resource property designated by the given field to respective resources and adapts
  them if necessary. May provide a single adapted value or a collection of references,
  with regard to the field's meta data.