public abstract class freemarker.log.Logger
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: freemarker.log.Logger
  super_class: java.lang.Object
{
  public static final java.lang.String SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.freemarker.loggerLibrary"

  public static final int LIBRARY_AUTO;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int MIN_LIBRARY_ENUM;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final java.lang.String LIBRARY_NAME_AUTO;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "auto"

  public static final int LIBRARY_NONE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final java.lang.String LIBRARY_NAME_NONE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "none"

  public static final int LIBRARY_JAVA;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final java.lang.String LIBRARY_NAME_JUL;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "JUL"

  public static final int LIBRARY_AVALON;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static final java.lang.String LIBRARY_NAME_AVALON;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "Avalon"
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static final int LIBRARY_LOG4J;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final java.lang.String LIBRARY_NAME_LOG4J;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "Log4j"

  public static final int LIBRARY_COMMONS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final java.lang.String LIBRARY_NAME_COMMONS_LOGGING;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "CommonsLogging"

  public static final int LIBRARY_SLF4J;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  public static final java.lang.String LIBRARY_NAME_SLF4J;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "SLF4J"

  private static final int MAX_LIBRARY_ENUM;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  private static final java.lang.String REAL_LOG4J_PRESENCE_CLASS;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.apache.log4j.FileAppender"

  private static final java.lang.String LOG4J_OVER_SLF4J_TESTER_CLASS;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "freemarker.log._Log4jOverSLF4JTester"

  private static final java.lang.String[] LIBRARIES_BY_PRIORITY;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static int libraryEnum;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static freemarker.log.LoggerFactory loggerFactory;
    descriptor: Lfreemarker/log/LoggerFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static boolean initializedFromSystemProperty;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String categoryPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final java.util.Map loggersByCategory;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 163
            bipush 10
            anewarray java.lang.String
            dup
            iconst_1
         1: .line 164
            ldc "JUL"
            aastore
            dup
            iconst_2
         2: .line 165
            ldc "org.apache.log.Logger"
            aastore
            dup
            iconst_3
            ldc "Avalon"
            aastore
            dup
            iconst_4
         3: .line 166
            ldc "org.apache.log4j.Logger"
            aastore
            dup
            iconst_5
            ldc "Log4j"
            aastore
            dup
            bipush 6
         4: .line 168
            ldc "org.apache.commons.logging.Log"
            aastore
            dup
            bipush 7
            ldc "CommonsLogging"
            aastore
            dup
            bipush 8
         5: .line 169
            ldc "org.slf4j.Logger"
            aastore
            dup
            bipush 9
            ldc "SLF4J"
            aastore
         6: .line 163
            putstatic freemarker.log.Logger.LIBRARIES_BY_PRIORITY:[Ljava/lang/String;
         7: .line 181
            getstatic freemarker.log.Logger.LIBRARIES_BY_PRIORITY:[Ljava/lang/String;
            arraylength
            iconst_2
            idiv
            iconst_5
            if_icmpeq 9
         8: .line 182
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 206
      StackMap locals:
      StackMap stack:
            ldc ""
            putstatic freemarker.log.Logger.categoryPrefix:Ljava/lang/String;
        10: .line 208
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic freemarker.log.Logger.loggersByCategory:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.log.Logger this
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // freemarker.log.Logger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/log/Logger;

  private static java.lang.String getAvailabilityCheckClassName(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int libraryEnum
         0: .line 173
            iload 0 /* libraryEnum */
            iconst_m1
            if_icmpeq 1
            iload 0 /* libraryEnum */
            ifne 2
         1: .line 175
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 177
      StackMap locals:
      StackMap stack:
            getstatic freemarker.log.Logger.LIBRARIES_BY_PRIORITY:[Ljava/lang/String;
            iload 0 /* libraryEnum */
            iconst_1
            isub
            iconst_2
            imul
            aaload
            areturn
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  libraryEnum  I
    MethodParameters:
             Name  Flags
      libraryEnum  

  private static java.lang.String getLibraryName(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int libraryEnum
         0: .line 187
            iload 0 /* libraryEnum */
            iconst_m1
            if_icmpne 2
         1: .line 188
            ldc "auto"
            areturn
         2: .line 190
      StackMap locals:
      StackMap stack:
            iload 0 /* libraryEnum */
            ifne 4
         3: .line 191
            ldc "none"
            areturn
         4: .line 193
      StackMap locals:
      StackMap stack:
            getstatic freemarker.log.Logger.LIBRARIES_BY_PRIORITY:[Ljava/lang/String;
            iload 0 /* libraryEnum */
            iconst_1
            isub
            iconst_2
            imul
            iconst_1
            iadd
            aaload
            areturn
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0  libraryEnum  I
    MethodParameters:
             Name  Flags
      libraryEnum  

  private static boolean isAutoDetected(int);
    descriptor: (I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int libraryEnum
         0: .line 198
            iload 0 /* libraryEnum */
            iconst_m1
            if_icmpeq 2
            iload 0 /* libraryEnum */
            ifeq 2
         1: .line 199
            iload 0 /* libraryEnum */
            iconst_5
            if_icmpeq 2
            iload 0 /* libraryEnum */
            iconst_4
            if_icmpne 3
         2: .line 198
      StackMap locals:
      StackMap stack:
            iconst_0
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_1
      StackMap locals:
      StackMap stack: int
         4: ireturn
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0  libraryEnum  I
    MethodParameters:
             Name  Flags
      libraryEnum  

  public static void selectLoggerLibrary(int);
    descriptor: (I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // int libraryEnum
         0: .line 230
            iload 0 /* libraryEnum */
            iconst_m1
            if_icmplt 1
            iload 0 /* libraryEnum */
            iconst_5
            if_icmple 2
         1: .line 231
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Library enum value out of range"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 234
      StackMap locals:
      StackMap stack:
            ldc Lfreemarker/log/Logger;
            dup
            astore 1
            monitorenter
         3: .line 235
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            ifnull 4
            iconst_1
            goto 5
      StackMap locals: java.lang.Class
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 2 /* loggerFactoryWasAlreadySet */
        start local 2 // boolean loggerFactoryWasAlreadySet
         6: .line 236
            iload 2 /* loggerFactoryWasAlreadySet */
            ifeq 7
            iload 0 /* libraryEnum */
            getstatic freemarker.log.Logger.libraryEnum:I
            if_icmpeq 25
         7: .line 238
      StackMap locals: int
      StackMap stack:
            iconst_1
            invokestatic freemarker.log.Logger.ensureLoggerFactorySet:(Z)V
         8: .line 241
            getstatic freemarker.log.Logger.initializedFromSystemProperty:Z
            ifeq 9
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            ifnonnull 19
         9: .line 242
      StackMap locals:
      StackMap stack:
            getstatic freemarker.log.Logger.libraryEnum:I
            istore 3 /* replacedLibraryEnum */
        start local 3 // int replacedLibraryEnum
        10: .line 243
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.setLibrary:(I)V
        11: .line 244
            getstatic freemarker.log.Logger.loggersByCategory:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
        12: .line 245
            iload 2 /* loggerFactoryWasAlreadySet */
            ifeq 25
        13: .line 246
            new java.lang.StringBuilder
            dup
            ldc "Logger library was already set earlier to \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        14: .line 247
            iload 3 /* replacedLibraryEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 248
            ldc "change to \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\" won't effect loggers created "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        16: .line 249
            ldc "earlier."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 246
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic freemarker.log.Logger.logWarnInLogger:(Ljava/lang/String;)V
        end local 3 // int replacedLibraryEnum
        18: .line 251
            goto 25
      StackMap locals:
      StackMap stack:
        19: iload 0 /* libraryEnum */
            getstatic freemarker.log.Logger.libraryEnum:I
            if_icmpeq 25
        20: .line 252
            new java.lang.StringBuilder
            dup
            ldc "Ignored "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lfreemarker/log/Logger;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".selectLoggerLibrary(\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 253
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 254
            ldc "\") call, because the \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "org.freemarker.loggerLibrary"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 255
            ldc "\" system property is set to \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic freemarker.log.Logger.libraryEnum:I
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 252
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic freemarker.log.Logger.logWarnInLogger:(Ljava/lang/String;)V
        end local 2 // boolean loggerFactoryWasAlreadySet
        25: .line 234
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        26: goto 29
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: aload 1
            monitorexit
        28: athrow
        29: .line 259
      StackMap locals:
      StackMap stack:
            return
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   30     0                 libraryEnum  I
            6   25     2  loggerFactoryWasAlreadySet  Z
           10   18     3         replacedLibraryEnum  I
      Exception table:
        from    to  target  type
           3    26      27  any
          27    28      27  any
    Exceptions:
      throws java.lang.ClassNotFoundException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
             Name  Flags
      libraryEnum  

  public static void setCategoryPrefix(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String prefix
         0: .line 274
            ldc Lfreemarker/log/Logger;
            dup
            astore 1
            monitorenter
         1: .line 275
            aload 0 /* prefix */
            ifnonnull 3
         2: .line 276
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 278
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* prefix */
            putstatic freemarker.log.Logger.categoryPrefix:Ljava/lang/String;
         4: .line 274
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 280
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String prefix
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0  prefix  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      prefix  

  public abstract void debug(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  

  public abstract void debug(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  
      t        

  public abstract void info(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  

  public abstract void info(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  
      t        

  public abstract void warn(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  

  public abstract void warn(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  
      t        

  public abstract void error(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  

  public abstract void error(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      message  
      t        

  public abstract boolean isDebugEnabled();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isInfoEnabled();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isWarnEnabled();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isErrorEnabled();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isFatalEnabled();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public static freemarker.log.Logger getLogger(java.lang.String);
    descriptor: (Ljava/lang/String;)Lfreemarker/log/Logger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String category
         0: .line 355
            getstatic freemarker.log.Logger.categoryPrefix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifeq 2
         1: .line 356
            new java.lang.StringBuilder
            dup
            getstatic freemarker.log.Logger.categoryPrefix:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* category */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 0 /* category */
         2: .line 358
      StackMap locals:
      StackMap stack:
            getstatic freemarker.log.Logger.loggersByCategory:Ljava/util/Map;
            dup
            astore 1
            monitorenter
         3: .line 359
            getstatic freemarker.log.Logger.loggersByCategory:Ljava/util/Map;
            aload 0 /* category */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast freemarker.log.Logger
            astore 2 /* logger */
        start local 2 // freemarker.log.Logger logger
         4: .line 360
            aload 2 /* logger */
            ifnonnull 8
         5: .line 361
            iconst_0
            invokestatic freemarker.log.Logger.ensureLoggerFactorySet:(Z)V
         6: .line 362
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            aload 0 /* category */
            invokeinterface freemarker.log.LoggerFactory.getLogger:(Ljava/lang/String;)Lfreemarker/log/Logger;
            astore 2 /* logger */
         7: .line 363
            getstatic freemarker.log.Logger.loggersByCategory:Ljava/util/Map;
            aload 0 /* category */
            aload 2 /* logger */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 365
      StackMap locals: java.util.Map freemarker.log.Logger
      StackMap stack:
            aload 2 /* logger */
            aload 1
            monitorexit
         9: areturn
        end local 2 // freemarker.log.Logger logger
        10: .line 358
      StackMap locals: java.lang.String java.util.Map
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        11: athrow
        end local 0 // java.lang.String category
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0  category  Ljava/lang/String;
            4   10     2    logger  Lfreemarker/log/Logger;
      Exception table:
        from    to  target  type
           3     9      10  any
          10    11      10  any
    MethodParameters:
          Name  Flags
      category  

  private static void ensureLoggerFactorySet(boolean);
    descriptor: (Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // boolean onlyIfCanBeSetFromSysProp
         0: .line 370
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            ifnull 1
            return
         1: .line 371
      StackMap locals:
      StackMap stack:
            ldc Lfreemarker/log/Logger;
            dup
            astore 1
            monitorenter
         2: .line 372
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            ifnull 4
            aload 1
            monitorexit
         3: return
         4: .line 374
      StackMap locals: java.lang.Class
      StackMap stack:
            ldc "org.freemarker.loggerLibrary"
            invokestatic freemarker.log.Logger.getSystemProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* sysPropVal */
        start local 2 // java.lang.String sysPropVal
         5: .line 377
            aload 2 /* sysPropVal */
            ifnull 24
         6: .line 378
            aload 2 /* sysPropVal */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* sysPropVal */
         7: .line 380
            iconst_0
            istore 4 /* foundMatch */
        start local 4 // boolean foundMatch
         8: .line 381
            iconst_m1
            istore 5 /* matchedEnum */
        start local 5 // int matchedEnum
         9: .line 383
      StackMap locals: int java.lang.Class java.lang.String top int int
      StackMap stack:
            aload 2 /* sysPropVal */
            iload 5 /* matchedEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 12
        10: .line 384
            iconst_1
            istore 4 /* foundMatch */
        11: .line 385
            goto 13
        12: .line 386
      StackMap locals:
      StackMap stack:
            iinc 5 /* matchedEnum */ 1
        13: .line 388
      StackMap locals:
      StackMap stack:
            iload 5 /* matchedEnum */
            iconst_5
            if_icmpgt 14
            iload 4 /* foundMatch */
            ifeq 9
        14: .line 390
      StackMap locals:
      StackMap stack:
            iload 4 /* foundMatch */
            ifne 20
        15: .line 391
            new java.lang.StringBuilder
            dup
            ldc "Ignored invalid \"org.freemarker.loggerLibrary\" system property value: \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        16: .line 392
            aload 2 /* sysPropVal */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 391
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic freemarker.log.Logger.logWarnInLogger:(Ljava/lang/String;)V
        18: .line 393
            iload 0 /* onlyIfCanBeSetFromSysProp */
            ifeq 20
            aload 1
            monitorexit
        19: return
        20: .line 396
      StackMap locals:
      StackMap stack:
            iload 4 /* foundMatch */
            ifeq 21
            iload 5 /* matchedEnum */
            goto 22
      StackMap locals:
      StackMap stack:
        21: iconst_m1
      StackMap locals:
      StackMap stack: int
        22: istore 3 /* libraryEnum */
        end local 5 // int matchedEnum
        end local 4 // boolean foundMatch
        start local 3 // int libraryEnum
        23: .line 397
            goto 27
        end local 3 // int libraryEnum
        24: .line 398
      StackMap locals: int java.lang.Class java.lang.String
      StackMap stack:
            iload 0 /* onlyIfCanBeSetFromSysProp */
            ifeq 26
            aload 1
            monitorexit
        25: return
        26: .line 399
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 3 /* libraryEnum */
        start local 3 // int libraryEnum
        27: .line 403
      StackMap locals: int
      StackMap stack:
            iload 3 /* libraryEnum */
            invokestatic freemarker.log.Logger.setLibrary:(I)V
        28: .line 404
            aload 2 /* sysPropVal */
            ifnull 47
        29: .line 405
            iconst_1
            putstatic freemarker.log.Logger.initializedFromSystemProperty:Z
        30: .line 407
            goto 47
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: astore 4 /* e */
        start local 4 // java.lang.Throwable e
        32: .line 408
            iload 0 /* onlyIfCanBeSetFromSysProp */
            ifeq 33
            aload 2 /* sysPropVal */
            ifnull 33
            iconst_0
            goto 34
      StackMap locals: java.lang.Throwable
      StackMap stack:
        33: iconst_1
      StackMap locals:
      StackMap stack: int
        34: istore 5 /* disableLogging */
        start local 5 // boolean disableLogging
        35: .line 410
            new java.lang.StringBuilder
            dup
            ldc "Couldn't set up logger for \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* libraryEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        36: .line 411
            iload 5 /* disableLogging */
            ifeq 37
            ldc "; logging disabled"
            goto 38
      StackMap locals: int java.lang.Class java.lang.String int java.lang.Throwable int
      StackMap stack: java.lang.StringBuilder
        37: ldc "."
      StackMap locals: int java.lang.Class java.lang.String int java.lang.Throwable int
      StackMap stack: java.lang.StringBuilder java.lang.String
        38: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        39: .line 410
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        40: .line 411
            aload 4 /* e */
        41: .line 409
            invokestatic freemarker.log.Logger.logErrorInLogger:(Ljava/lang/String;Ljava/lang/Throwable;)V
        42: .line 412
            iload 5 /* disableLogging */
            ifeq 47
        43: .line 414
            iconst_0
            invokestatic freemarker.log.Logger.setLibrary:(I)V
        44: .line 415
            goto 47
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
        45: astore 6 /* e2 */
        start local 6 // java.lang.ClassNotFoundException e2
        46: .line 416
            new java.lang.RuntimeException
            dup
            ldc "Bug"
            aload 6 /* e2 */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.ClassNotFoundException e2
        end local 5 // boolean disableLogging
        end local 4 // java.lang.Throwable e
        end local 3 // int libraryEnum
        end local 2 // java.lang.String sysPropVal
        47: .line 371
      StackMap locals: int java.lang.Class
      StackMap stack:
            aload 1
            monitorexit
        48: goto 51
      StackMap locals:
      StackMap stack: java.lang.Throwable
        49: aload 1
            monitorexit
        50: athrow
        51: .line 421
      StackMap locals:
      StackMap stack:
            return
        end local 0 // boolean onlyIfCanBeSetFromSysProp
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   52     0  onlyIfCanBeSetFromSysProp  Z
            5   47     2                 sysPropVal  Ljava/lang/String;
           23   24     3                libraryEnum  I
           27   47     3                libraryEnum  I
            8   23     4                 foundMatch  Z
            9   23     5                matchedEnum  I
           32   47     4                          e  Ljava/lang/Throwable;
           35   47     5             disableLogging  Z
           46   47     6                         e2  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
          27    30      31  Class java.lang.Throwable
          43    44      45  Class java.lang.ClassNotFoundException
           2     3      49  any
           4    19      49  any
          20    25      49  any
          26    48      49  any
          49    50      49  any
    MethodParameters:
                           Name  Flags
      onlyIfCanBeSetFromSysProp  

  private static freemarker.log.LoggerFactory createLoggerFactory(int);
    descriptor: (I)Lfreemarker/log/LoggerFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // int libraryEnum
         0: .line 428
            iload 0 /* libraryEnum */
            iconst_m1
            if_icmpne 19
         1: .line 429
            iconst_5
            istore 1 /* libraryEnumToTry */
        start local 1 // int libraryEnumToTry
         2: goto 16
         3: .line 430
      StackMap locals: int
      StackMap stack:
            iload 1 /* libraryEnumToTry */
            invokestatic freemarker.log.Logger.isAutoDetected:(I)Z
            ifne 4
            goto 15
         4: .line 431
      StackMap locals:
      StackMap stack:
            iload 1 /* libraryEnumToTry */
            iconst_3
            if_icmpne 6
            invokestatic freemarker.log.Logger.hasLog4LibraryThatDelegatesToWorkingSLF4J:()Z
            ifeq 6
         5: .line 432
            iconst_5
            istore 1 /* libraryEnumToTry */
         6: .line 436
      StackMap locals:
      StackMap stack:
            iload 1 /* libraryEnumToTry */
            invokestatic freemarker.log.Logger.createLoggerFactoryForNonAuto:(I)Lfreemarker/log/LoggerFactory;
         7: areturn
         8: .line 437
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            pop
            goto 15
         9: .line 439
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* e */
        start local 2 // java.lang.Throwable e
        10: .line 441
            new java.lang.StringBuilder
            dup
            ldc "Unexpected error when initializing logging for \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 442
            iload 1 /* libraryEnumToTry */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 441
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 443
            aload 2 /* e */
        14: .line 440
            invokestatic freemarker.log.Logger.logErrorInLogger:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable e
        15: .line 429
      StackMap locals:
      StackMap stack:
            iinc 1 /* libraryEnumToTry */ -1
      StackMap locals:
      StackMap stack:
        16: iload 1 /* libraryEnumToTry */
            iconst_m1
            if_icmpge 3
        end local 1 // int libraryEnumToTry
        17: .line 446
            ldc "Auto detecton couldn't set up any logger libraries; FreeMarker logging suppressed."
            invokestatic freemarker.log.Logger.logWarnInLogger:(Ljava/lang/String;)V
        18: .line 447
            new freemarker.log._NullLoggerFactory
            dup
            invokespecial freemarker.log._NullLoggerFactory.<init>:()V
            areturn
        19: .line 449
      StackMap locals:
      StackMap stack:
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.createLoggerFactoryForNonAuto:(I)Lfreemarker/log/LoggerFactory;
            areturn
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   20     0       libraryEnum  I
            2   17     1  libraryEnumToTry  I
           10   15     2                 e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.ClassNotFoundException
           6     7       9  Class java.lang.Throwable
    Exceptions:
      throws java.lang.ClassNotFoundException
    MethodParameters:
             Name  Flags
      libraryEnum  

  private static freemarker.log.LoggerFactory createLoggerFactoryForNonAuto(int);
    descriptor: (I)Lfreemarker/log/LoggerFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // int libraryEnum
         0: .line 458
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.getAvailabilityCheckClassName:(I)Ljava/lang/String;
            astore 1 /* availabilityCheckClassName */
        start local 1 // java.lang.String availabilityCheckClassName
         1: .line 459
            aload 1 /* availabilityCheckClassName */
            ifnull 12
         2: .line 460
            aload 1 /* availabilityCheckClassName */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         3: .line 461
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.getLibraryName:(I)Ljava/lang/String;
            astore 2 /* libraryName */
        start local 2 // java.lang.String libraryName
         4: .line 464
            new java.lang.StringBuilder
            dup
            ldc "freemarker.log._"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* libraryName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "LoggerFactory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 463
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
         6: .line 464
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast freemarker.log.LoggerFactory
         7: .line 463
            areturn
         8: .line 465
      StackMap locals: int java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
         9: .line 466
            new java.lang.RuntimeException
            dup
        10: .line 467
            new java.lang.StringBuilder
            dup
            ldc "Unexpected error when creating logger factory for \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* libraryName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* e */
        11: .line 466
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        end local 2 // java.lang.String libraryName
        12: .line 470
      StackMap locals:
      StackMap stack:
            iload 0 /* libraryEnum */
            iconst_1
            if_icmpne 14
        13: .line 471
            new freemarker.log._JULLoggerFactory
            dup
            invokespecial freemarker.log._JULLoggerFactory.<init>:()V
            areturn
        14: .line 472
      StackMap locals:
      StackMap stack:
            iload 0 /* libraryEnum */
            ifne 16
        15: .line 473
            new freemarker.log._NullLoggerFactory
            dup
            invokespecial freemarker.log._NullLoggerFactory.<init>:()V
            areturn
        16: .line 475
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            ldc "Bug"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String availabilityCheckClassName
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   17     0                 libraryEnum  I
            1   17     1  availabilityCheckClassName  Ljava/lang/String;
            4   12     2                 libraryName  Ljava/lang/String;
            9   12     3                           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     7       8  Class java.lang.Exception
    Exceptions:
      throws java.lang.ClassNotFoundException
    MethodParameters:
             Name  Flags
      libraryEnum  

  private static boolean hasLog4LibraryThatDelegatesToWorkingSLF4J();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 482
            iconst_3
            invokestatic freemarker.log.Logger.getAvailabilityCheckClassName:(I)Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         1: .line 483
            iconst_5
            invokestatic freemarker.log.Logger.getAvailabilityCheckClassName:(I)Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         2: .line 484
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: pop
         4: .line 485
            iconst_0
            ireturn
         5: .line 488
      StackMap locals:
      StackMap stack:
            ldc "org.apache.log4j.FileAppender"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         6: .line 489
            iconst_0
            ireturn
         7: .line 490
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            pop
         8: .line 492
            ldc "freemarker.log._Log4jOverSLF4JTester"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
         9: .line 493
            ldc "test"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
        10: .line 492
            astore 0 /* r */
        start local 0 // java.lang.Object r
        11: .line 494
            aload 0 /* r */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
        12: ireturn
        end local 0 // java.lang.Object r
        13: .line 495
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
        14: .line 496
            iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
           11   13     0     r  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Throwable
           5     6       7  Class java.lang.ClassNotFoundException
           8    12      13  Class java.lang.Throwable

  private static synchronized void setLibrary(int);
    descriptor: (I)V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int libraryEnum
         0: .line 502
            iload 0 /* libraryEnum */
            invokestatic freemarker.log.Logger.createLoggerFactory:(I)Lfreemarker/log/LoggerFactory;
            putstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
         1: .line 503
            iload 0 /* libraryEnum */
            putstatic freemarker.log.Logger.libraryEnum:I
         2: .line 504
            return
        end local 0 // int libraryEnum
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  libraryEnum  I
    Exceptions:
      throws java.lang.ClassNotFoundException
    MethodParameters:
             Name  Flags
      libraryEnum  

  private static void logWarnInLogger(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String message
         0: .line 507
            iconst_0
            aload 0 /* message */
            aconst_null
            invokestatic freemarker.log.Logger.logInLogger:(ZLjava/lang/String;Ljava/lang/Throwable;)V
         1: .line 508
            return
        end local 0 // java.lang.String message
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  

  private static void logErrorInLogger(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String message
        start local 1 // java.lang.Throwable exception
         0: .line 511
            iconst_1
            aload 0 /* message */
            aload 1 /* exception */
            invokestatic freemarker.log.Logger.logInLogger:(ZLjava/lang/String;Ljava/lang/Throwable;)V
         1: .line 512
            return
        end local 1 // java.lang.Throwable exception
        end local 0 // java.lang.String message
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0    message  Ljava/lang/String;
            0    2     1  exception  Ljava/lang/Throwable;
    MethodParameters:
           Name  Flags
      message    
      exception  

  private static void logInLogger(boolean, java.lang.String, java.lang.Throwable);
    descriptor: (ZLjava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // boolean error
        start local 1 // java.lang.String message
        start local 2 // java.lang.Throwable exception
         0: .line 516
            ldc Lfreemarker/log/Logger;
            dup
            astore 4
            monitorenter
         1: .line 517
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            ifnull 2
            getstatic freemarker.log.Logger.loggerFactory:Lfreemarker/log/LoggerFactory;
            instanceof freemarker.log._NullLoggerFactory
            ifne 2
            iconst_1
            goto 3
      StackMap locals: int java.lang.String java.lang.Throwable top java.lang.Class
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* canUseRealLogger */
        start local 3 // boolean canUseRealLogger
         4: .line 516
            aload 4
            monitorexit
         5: goto 8
        end local 3 // boolean canUseRealLogger
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 4
            monitorexit
         7: athrow
        start local 3 // boolean canUseRealLogger
         8: .line 520
      StackMap locals: int java.lang.String java.lang.Throwable int
      StackMap stack:
            iload 3 /* canUseRealLogger */
            ifeq 17
         9: .line 522
            ldc "freemarker.logger"
            invokestatic freemarker.log.Logger.getLogger:(Ljava/lang/String;)Lfreemarker/log/Logger;
            astore 4 /* logger */
        start local 4 // freemarker.log.Logger logger
        10: .line 523
            iload 0 /* error */
            ifeq 13
        11: .line 524
            aload 4 /* logger */
            aload 1 /* message */
            invokevirtual freemarker.log.Logger.error:(Ljava/lang/String;)V
        12: .line 525
            goto 17
        13: .line 526
      StackMap locals: freemarker.log.Logger
      StackMap stack:
            aload 4 /* logger */
            aload 1 /* message */
            invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;)V
        end local 4 // freemarker.log.Logger logger
        14: .line 528
            goto 17
      StackMap locals: int java.lang.String java.lang.Throwable int
      StackMap stack: java.lang.Throwable
        15: pop
        16: .line 529
            iconst_0
            istore 3 /* canUseRealLogger */
        17: .line 533
      StackMap locals:
      StackMap stack:
            iload 3 /* canUseRealLogger */
            ifne 30
        18: .line 534
            getstatic java.lang.System.err:Ljava/io/PrintStream;
        19: new java.lang.StringBuilder
            dup
            iload 0 /* error */
            ifeq 20
            ldc "ERROR"
            goto 21
      StackMap locals: int java.lang.String java.lang.Throwable int
      StackMap stack: java.io.PrintStream new 19 new 19
        20: ldc "WARN"
      StackMap locals: int java.lang.String java.lang.Throwable int
      StackMap stack: java.io.PrintStream new 19 new 19 java.lang.String
        21: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 535
            ldc Lfreemarker/log/LoggerFactory;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* message */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 534
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 536
            aload 2 /* exception */
            ifnull 30
        25: .line 537
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\tException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* exception */
            invokestatic freemarker.log.Logger.tryToString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 538
            goto 29
        27: .line 539
      StackMap locals:
      StackMap stack:
            aload 2 /* exception */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 2 /* exception */
        28: .line 540
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\tCaused by: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* exception */
            invokestatic freemarker.log.Logger.tryToString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 538
      StackMap locals:
      StackMap stack:
            aload 2 /* exception */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            ifnonnull 27
        30: .line 544
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean canUseRealLogger
        end local 2 // java.lang.Throwable exception
        end local 1 // java.lang.String message
        end local 0 // boolean error
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   31     0             error  Z
            0   31     1           message  Ljava/lang/String;
            0   31     2         exception  Ljava/lang/Throwable;
            4    6     3  canUseRealLogger  Z
            8   31     3  canUseRealLogger  Z
           10   14     4            logger  Lfreemarker/log/Logger;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
           9    14      15  Class java.lang.Throwable
    MethodParameters:
           Name  Flags
      error      
      message    
      exception  

  private static java.lang.String getSystemProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String key
         0: .line 553
            new freemarker.log.Logger$1
            dup
            aload 0 /* key */
            invokespecial freemarker.log.Logger$1.<init>:(Ljava/lang/String;)V
         1: .line 552
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
         2: areturn
         3: .line 558
      StackMap locals:
      StackMap stack: java.security.AccessControlException
            pop
         4: .line 559
            new java.lang.StringBuilder
            dup
            ldc "Insufficient permissions to read system property \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic freemarker.log.Logger.logWarnInLogger:(Ljava/lang/String;)V
         5: .line 560
            aconst_null
            areturn
         6: .line 561
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* e */
        start local 1 // java.lang.Throwable e
         7: .line 562
            new java.lang.StringBuilder
            dup
            ldc "Failed to read system property \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokestatic freemarker.log.Logger.logErrorInLogger:(Ljava/lang/String;Ljava/lang/Throwable;)V
         8: .line 563
            aconst_null
            areturn
        end local 1 // java.lang.Throwable e
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0   key  Ljava/lang/String;
            7    9     1     e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     2       3  Class java.security.AccessControlException
           0     2       6  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      key   final

  private static java.lang.String tryToString(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 572
            aload 0 /* object */
            ifnonnull 1
            aconst_null
            areturn
         1: .line 574
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
         2: areturn
         3: .line 575
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
         4: .line 576
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  object  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      object  
}
SourceFile: "Logger.java"
NestMembers:
  freemarker.log.Logger$1
InnerClasses:
  freemarker.log.Logger$1