docs: public static LoggerFactory newLoggerFactory(String preferredType) {
          // creation of a new logger factory is not a performance critical operation, so we can afford doing it under the lock
          // and perform many non-cached accesses to volatile loggerFactory field to simplify the code
  
          synchronized (FACTORY_LOCK) {
              LoggerFactory obtainedFactory;
  
              obtainedFactory = tryToObtainFactoryByConfiguredClass();
              if (obtainedFactory != null) {
                  return obtainedFactory;
              }
  
              obtainedFactory = tryToObtainFactoryByPreferredType(preferredType);
              if (obtainedFactory != null) {
                  return obtainedFactory;
              }
  
              assert StringUtil.isNullOrEmpty(preferredType);
              obtainedFactory = obtainFactoryByRecoveringFromNullOrEmptyPreferredType();
  
              return obtainedFactory;
          }
      }