DatabaseField databaseField = mapping.getField().getAnnotation(DatabaseField.class);
final Object value;
if (mapping.isOptionalField() && isRowWithAllFieldsNull(node)) {
value = null;
} else if (databaseField.mapper() != DefaultObjectMapper.class) {
ObjectMapper mapper = databaseField.mapper().newInstance();
value = mapper.unmarshalFromDbNode(node);
} else {
value = mapField(mapping.getFieldClass(), node);
}