code: final void doWith(final MappedFieldMetaData metaData) {
          if (metaData == null) {
              throw new IllegalArgumentException("Method argument metaData must not be null.");
          }
  
          // Prepare the dynamic contextual data of this mapping
          final FieldData fieldData = new FieldData(metaData, evaluateFieldPath(metaData));
          // Determine whether the mapping can result in a non-null value
          final boolean isMappable = isMappable(fieldData);
  
          if (metaData.isLazy()) {
              // Lazy fields are never null, regardless of whether a value is mappable.
              Lazy<Object> lazy = isMappable ? new LazyFieldValue(fieldData, this) : java.util.Optional::empty;
              setField(metaData, lazy);
              return;
          }
  
          Object value = null;
  
          if (isMappable) {
              value = resolve(fieldData);
          }
  
          value = postProcessResolvedValue(fieldData, value);
  
          if (value != null) {
              setField(metaData, value);
          }
      }
docs: Invoked for each {@link io.neba.core.resourcemodels.metadata.ResourceModelMetaData#getMappableFields() mappable field}
  of a {@link io.neba.api.annotations.ResourceModel} to map the {@link MappedFieldMetaData#getField() corresponding field's}
  value from the resource provided to the {@link #FieldValueMappingCallback(Object, Resource, ResourceModelFactory, AnnotatedFieldMappers, PlaceholderVariableResolvers) constructor}.
  
  @param metaData must not be <code>null</code>.