public abstract class reactor.util.Loggers
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: reactor.util.Loggers
  super_class: java.lang.Object
{
  public static final java.lang.String FALLBACK_PROPERTY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "reactor.logging.fallback"

  private static java.util.function.Function<java.lang.String, ? extends reactor.util.Logger> LOGGER_FACTORY;
    descriptor: Ljava/util/function/Function;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/function/Function<Ljava/lang/String;+Lreactor/util/Logger;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 52
            invokestatic reactor.util.Loggers.resetLoggerFactory:()V
         1: .line 53
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void resetLoggerFactory();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 68
            invokestatic reactor.util.Loggers.useSl4jLoggers:()V
         1: .line 69
            goto 7
         2: .line 70
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
         3: .line 71
            invokestatic reactor.util.Loggers.isFallbackToJdk:()Z
            ifeq 6
         4: .line 72
            invokestatic reactor.util.Loggers.useJdkLoggers:()V
         5: .line 73
            goto 7
         6: .line 75
      StackMap locals:
      StackMap stack:
            invokestatic reactor.util.Loggers.useConsoleLoggers:()V
         7: .line 78
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable

  static boolean isFallbackToJdk();
    descriptor: ()Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 88
            ldc "JDK"
            ldc "reactor.logging.fallback"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void useConsoleLoggers();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 102
            ldc Lreactor/util/Loggers;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 0 /* name */
        start local 0 // java.lang.String name
         1: .line 103
            new reactor.util.Loggers$ConsoleLoggerFactory
            dup
            iconst_0
            invokespecial reactor.util.Loggers$ConsoleLoggerFactory.<init>:(Z)V
            astore 1 /* loggerFactory */
        start local 1 // java.util.function.Function loggerFactory
         2: .line 104
            aload 1 /* loggerFactory */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            ldc "Using Console logging"
            invokeinterface reactor.util.Logger.debug:(Ljava/lang/String;)V
         3: .line 105
            aload 1 /* loggerFactory */
            putstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
         4: .line 106
            return
        end local 1 // java.util.function.Function loggerFactory
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1    5     0           name  Ljava/lang/String;
            2    5     1  loggerFactory  Ljava/util/function/Function<Ljava/lang/String;Lreactor/util/Logger;>;

  public static void useVerboseConsoleLoggers();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 118
            ldc Lreactor/util/Loggers;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 0 /* name */
        start local 0 // java.lang.String name
         1: .line 119
            new reactor.util.Loggers$ConsoleLoggerFactory
            dup
            iconst_1
            invokespecial reactor.util.Loggers$ConsoleLoggerFactory.<init>:(Z)V
            astore 1 /* loggerFactory */
        start local 1 // java.util.function.Function loggerFactory
         2: .line 120
            aload 1 /* loggerFactory */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            ldc "Using Verbose Console logging"
            invokeinterface reactor.util.Logger.debug:(Ljava/lang/String;)V
         3: .line 121
            aload 1 /* loggerFactory */
            putstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
         4: .line 122
            return
        end local 1 // java.util.function.Function loggerFactory
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1    5     0           name  Ljava/lang/String;
            2    5     1  loggerFactory  Ljava/util/function/Function<Ljava/lang/String;Lreactor/util/Logger;>;

  public static void useCustomLoggers(java.util.function.Function<java.lang.String, ? extends reactor.util.Logger>);
    descriptor: (Ljava/util/function/Function;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.function.Function loggerFactory
         0: .line 135
            ldc Lreactor/util/Loggers;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 1 /* name */
        start local 1 // java.lang.String name
         1: .line 136
            aload 0 /* loggerFactory */
            aload 1 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            ldc "Using custom logging"
            invokeinterface reactor.util.Logger.debug:(Ljava/lang/String;)V
         2: .line 137
            aload 0 /* loggerFactory */
            putstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
         3: .line 138
            return
        end local 1 // java.lang.String name
        end local 0 // java.util.function.Function loggerFactory
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0  loggerFactory  Ljava/util/function/Function<Ljava/lang/String;+Lreactor/util/Logger;>;
            1    4     1           name  Ljava/lang/String;
    Signature: (Ljava/util/function/Function<Ljava/lang/String;+Lreactor/util/Logger;>;)V
    MethodParameters:
               Name  Flags
      loggerFactory  final

  public static void useJdkLoggers();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 148
            ldc Lreactor/util/Loggers;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 0 /* name */
        start local 0 // java.lang.String name
         1: .line 149
            new reactor.util.Loggers$JdkLoggerFactory
            dup
            invokespecial reactor.util.Loggers$JdkLoggerFactory.<init>:()V
            astore 1 /* loggerFactory */
        start local 1 // java.util.function.Function loggerFactory
         2: .line 150
            aload 1 /* loggerFactory */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            ldc "Using JDK logging framework"
            invokeinterface reactor.util.Logger.debug:(Ljava/lang/String;)V
         3: .line 151
            aload 1 /* loggerFactory */
            putstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
         4: .line 152
            return
        end local 1 // java.util.function.Function loggerFactory
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1    5     0           name  Ljava/lang/String;
            2    5     1  loggerFactory  Ljava/util/function/Function<Ljava/lang/String;Lreactor/util/Logger;>;

  public static void useSl4jLoggers();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 163
            ldc Lreactor/util/Loggers;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 0 /* name */
        start local 0 // java.lang.String name
         1: .line 164
            new reactor.util.Loggers$Slf4JLoggerFactory
            dup
            invokespecial reactor.util.Loggers$Slf4JLoggerFactory.<init>:()V
            astore 1 /* loggerFactory */
        start local 1 // java.util.function.Function loggerFactory
         2: .line 165
            aload 1 /* loggerFactory */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            ldc "Using Slf4j logging framework"
            invokeinterface reactor.util.Logger.debug:(Ljava/lang/String;)V
         3: .line 166
            aload 1 /* loggerFactory */
            putstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
         4: .line 167
            return
        end local 1 // java.util.function.Function loggerFactory
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1    5     0           name  Ljava/lang/String;
            2    5     1  loggerFactory  Ljava/util/function/Function<Ljava/lang/String;Lreactor/util/Logger;>;

  public static reactor.util.Logger getLogger(java.lang.String);
    descriptor: (Ljava/lang/String;)Lreactor/util/Logger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 181
            getstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public static reactor.util.Logger getLogger(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lreactor/util/Logger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class cls
         0: .line 193
            getstatic reactor.util.Loggers.LOGGER_FACTORY:Ljava/util/function/Function;
            aload 0 /* cls */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.util.Logger
            areturn
        end local 0 // java.lang.Class cls
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   cls  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Lreactor/util/Logger;
    MethodParameters:
      Name  Flags
      cls   

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // reactor.util.Loggers this
         0: .line 637
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // reactor.util.Loggers this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lreactor/util/Loggers;
}
SourceFile: "Loggers.java"
NestMembers:
  reactor.util.Loggers$ConsoleLogger  reactor.util.Loggers$ConsoleLoggerFactory  reactor.util.Loggers$JdkLogger  reactor.util.Loggers$JdkLoggerFactory  reactor.util.Loggers$Slf4JLogger  reactor.util.Loggers$Slf4JLoggerFactory
InnerClasses:
  final ConsoleLogger = reactor.util.Loggers$ConsoleLogger of reactor.util.Loggers
  private final ConsoleLoggerFactory = reactor.util.Loggers$ConsoleLoggerFactory of reactor.util.Loggers
  final JdkLogger = reactor.util.Loggers$JdkLogger of reactor.util.Loggers
  private JdkLoggerFactory = reactor.util.Loggers$JdkLoggerFactory of reactor.util.Loggers
  private Slf4JLogger = reactor.util.Loggers$Slf4JLogger of reactor.util.Loggers
  private Slf4JLoggerFactory = reactor.util.Loggers$Slf4JLoggerFactory of reactor.util.Loggers