public Mapper build() {
        LOG.info("Initializing Dozer. Version: {}, Thread Name: {}",
                 DozerConstants.CURRENT_VERSION, Thread.currentThread().getName());

        DozerClassLoader defaultClassLoader = getClassLoader();
        Settings settings = getSettings(defaultClassLoader);
        DozerClassLoader settingsClassLoader = getClassLoaderFromSettings(settings, defaultClassLoader);

        DozerClassLoader classLoader = settingsClassLoader == null ? defaultClassLoader : settingsClassLoader;

        DozerProxyResolver proxyResolver = getProxyResolver(settings, classLoader);

        CacheManager cacheManager = getCacheManager(settings);
        ELEngine elEngine = getELEngine();
        ElementReader elementReader = getElementReader(elEngine);

        BeanContainer beanContainer = new BeanContainer();
        beanContainer.setElEngine(elEngine);
        beanContainer.setElementReader(elementReader);
        beanContainer.setClassLoader(classLoader);
        beanContainer.setProxyResolver(proxyResolver);

        DestBeanCreator destBeanCreator = new DestBeanCreator(beanContainer);
        destBeanCreator.setStoredFactories(beanFactories);

        PropertyDescriptorFactory propertyDescriptorFactory = new PropertyDescriptorFactory();
        BeanMappingGenerator beanMappingGenerator = new BeanMappingGenerator(beanContainer, destBeanCreator, propertyDescriptorFactory);
        DestBeanBuilderCreator destBeanBuilderCreator = new DestBeanBuilderCreator();

        loadDozerModules(beanContainer, destBeanBuilderCreator, beanMappingGenerator, propertyDescriptorFactory, destBeanCreator);

        List<MappingFileData> mappingsFileData = new ArrayList<>();
        if (settings.getUseJaxbMappingEngine()) {
            mappingsFileData.addAll(buildXmlMappings(beanContainer, destBeanCreator, propertyDescriptorFactory, elEngine));
        } else {
            XMLParser xmlParser = new XMLParser(beanContainer, destBeanCreator, propertyDescriptorFactory);
            XMLParserFactory xmlParserFactory = new XMLParserFactory(beanContainer);

            mappingsFileData.addAll(readXmlMappings(xmlParserFactory, xmlParser));
            mappingsFileData.addAll(loadFromFiles(mappingFiles, xmlParserFactory, xmlParser, beanContainer));
        }

        mappingsFileData.addAll(buildGenericMappings(beanContainer, destBeanCreator, propertyDescriptorFactory));
        mappingsFileData.addAll(createMappingsWithBuilders(beanContainer, destBeanCreator, propertyDescriptorFactory));

        loadCustomMappings(mappingsFileData, beanContainer, propertyDescriptorFactory, beanMappingGenerator, destBeanCreator);

        return new DozerBeanMapper(mappingFiles,
                                   beanContainer,
                                   destBeanCreator,
                                   destBeanBuilderCreator,
                                   beanMappingGenerator,
                                   propertyDescriptorFactory,
                                   customConverters,
                                   mappingsFileData,
                                   eventListeners,
                                   customFieldMapper,
                                   customConvertersWithId,
                                   customMappings,
                                   globalConfiguration,
                                   cacheManager);
    }
Creates an instance of {@link Mapper}. Mapper is configured according to the current builder state.
<p>
Subsequent calls of this method will return new instances.

@return new instance of {@link Mapper}.
core/src/main/java/com/github/dozermapper/core/DozerBeanMapperBuilder.java