docs: public synchronized static Log getLog(Class< ? > clazz)
      {
          if (slf4jLoggingAvailable == null)
          {
              try
              {
                  classLoader.loadClass("org.slf4j.Logger");
                  slf4jLoggingAvailable = Boolean.TRUE;
              }
              catch (Exception e)
              {
                  slf4jLoggingAvailable = Boolean.FALSE;
              }
          }
  
          if (slf4jLoggingAvailable)
          {
              try
              {
                  return new Slf4JLogger(clazz);
              }
              catch (Throwable e)
              {
                  slf4jLoggingAvailable = Boolean.FALSE;
              }
          }
  
          if (log4jLoggingAvailable == null)
          {
              try
              {
                  classLoader.loadClass("org.apache.log4j.Logger");
                  log4jLoggingAvailable = Boolean.TRUE;
              }
              catch (Exception e)
              {
                  log4jLoggingAvailable = Boolean.FALSE;
              }
          }
  
          if (log4jLoggingAvailable)
          {
              return new Log4JLogger(clazz);
          }
  
          if (javaLoggingAvailable == null)
          {
              try
              {
                  classLoader.loadClass("java.util.logging.Logger");
                  javaLoggingAvailable = Boolean.TRUE;
              }
              catch (Exception e)
              {
                  javaLoggingAvailable = Boolean.FALSE;
              }
          }
          if (javaLoggingAvailable)
          {
              return new JavaLoggingLog(clazz);
          }
          return new NullLog();
      }