private <T> T createByCreationDirectiveAndMap(BeanCreationDirective creationDirective, ClassMap classMap, Object srcObj, T result, boolean bypassSuperMappings, String mapId) {
        if (result == null) {
            BeanBuilder beanBuilder = destBeanBuilderCreator.create(creationDirective);
            if (beanBuilder == null) {
                result = (T)destBeanCreator.create(creationDirective);
                mapToDestObject(classMap, srcObj, result, bypassSuperMappings, mapId);
            } else {
                mapToDestObject(classMap, srcObj, beanBuilder, bypassSuperMappings, mapId);
                result = (T)beanBuilder.build();
            }
        } else {
            mapToDestObject(classMap, srcObj, result, bypassSuperMappings, mapId);
        }
        return result;
    }
Create builder or target object if needed and call
{@link MappingProcessor#mapToDestObject(com.github.dozermapper.core.classmap.ClassMap, Object, Object, boolean, String)} function with
arguments {@code classMap}, {@code srcObj}, {@code result}, {@code bypassSuperMappings}, {@code mapId}

@param creationDirective   directive for concrete mapping (based mostly on {@code classMap})
@param classMap            class map information for concrete class
@param srcObj              source object
@param result              target entity for mapping
@param bypassSuperMappings //TODO
@param mapId               mapping identifier
@return result or created target entity for mapping
core/src/main/java/com/github/dozermapper/core/MappingProcessor.java