code: public DefaultPojoDaoFactory build() {
          if(executor == null) {
              executor = Executors.newFixedThreadPool(threadPoolSize, r -> new Thread(r, "Hecate"));
          }
          if(statementFactory == null) {
              statementFactory = new DefaultPojoStatementFactory(session);
          }
          if(contextFactory == null) {
              contextFactory = new DefaultPojoQueryContextFactory(session, statementFactory, maximumCacheSize);
          }
          if(converterRegistry == null) {
              DefaultConverterRegistry reg = new DefaultConverterRegistry();
              converterProviders.forEach(reg::registerConverter);
              this.converterRegistry = reg;
          }
          if(bindingFactory == null) {
              bindingFactory = new DefaultPojoBindingFactory(facetProvider, converterRegistry, namingStrategy);
          }
          DefaultPojoDaoFactory factory = new DefaultPojoDaoFactory(session, bindingFactory, statementFactory, contextFactory, namingStrategy, executor);
          pojoFactoryListeners.forEach(factory::addListener);
          return factory;
      }
docs: ----------------------------------------------------------------------------------------------------------------------