code: private static void unmarshalProperty(PropertyMetadata propertyMetadata, Object target,
        BaseEntity<?> nativeEntity) throws Throwable {
      // The datastore may not have every property that the entity class has
      // defined. For example, if we are running a projection query or if the
      // entity class added a new field without updating existing data...So
      // make sure there is a property or else, we get an exception from the
      // datastore.
      if (nativeEntity.contains(propertyMetadata.getMappedName())) {
        Value<?> datastoreValue = nativeEntity.getValue(propertyMetadata.getMappedName());
        Object entityValue = propertyMetadata.getMapper().toModel(datastoreValue);
        MethodHandle writeMethod = propertyMetadata.getWriteMethod();
        writeMethod.invoke(target, entityValue);
      }
    }
docs: Unmarshals the property with the given metadata and sets the unmarshalled value on the given
  <code>target</code> object.
  
  @param propertyMetadata
  the metadata of the property
  @param target
  the target object to set the unmarshalled value on
  @param nativeEntity
  the native entity containing the source property
  @throws Throwable
  propagated