final class freemarker.ext.beans.ClassIntrospectorBuilder implements java.lang.Cloneable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: freemarker.ext.beans.ClassIntrospectorBuilder
  super_class: java.lang.Object
{
  private final boolean bugfixed;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private static final java.lang.ref.ReferenceQueue INSTANCE_CACHE_REF_QUEUE;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private int exposureLevel;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private boolean exposeFields;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean treatDefaultMethodsAsBeanMembers;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private freemarker.ext.beans.MethodAppearanceFineTuner methodAppearanceFineTuner;
    descriptor: Lfreemarker/ext/beans/MethodAppearanceFineTuner;
    flags: (0x0002) ACC_PRIVATE

  private freemarker.ext.beans.MethodSorter methodSorter;
    descriptor: Lfreemarker/ext/beans/MethodSorter;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 36
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
         1: .line 37
            new java.lang.ref.ReferenceQueue
            dup
            invokespecial java.lang.ref.ReferenceQueue.<init>:()V
            putstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE_REF_QUEUE:Ljava/lang/ref/ReferenceQueue;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(freemarker.ext.beans.ClassIntrospector);
    descriptor: (Lfreemarker/ext/beans/ClassIntrospector;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // freemarker.ext.beans.ClassIntrospector ci
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            iconst_1
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
         2: .line 52
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
         3: .line 53
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
         4: .line 54
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
         5: .line 55
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
         6: .line 56
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
         7: .line 57
            aload 0 /* this */
            aload 1 /* ci */
            getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
         8: .line 58
            return
        end local 1 // freemarker.ext.beans.ClassIntrospector ci
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    9     1    ci  Lfreemarker/ext/beans/ClassIntrospector;
    MethodParameters:
      Name  Flags
      ci    

  void <init>(freemarker.template.Version);
    descriptor: (Lfreemarker/template/Version;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // freemarker.template.Version incompatibleImprovements
         0: .line 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            iconst_1
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
         2: .line 64
            aload 0 /* this */
            aload 1 /* incompatibleImprovements */
            invokestatic freemarker.ext.beans.BeansWrapper.is2321Bugfixed:(Lfreemarker/template/Version;)Z
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
         3: .line 65
            aload 0 /* this */
         4: .line 66
            aload 1 /* incompatibleImprovements */
            invokevirtual freemarker.template.Version.intValue:()I
            getstatic freemarker.template._TemplateAPI.VERSION_INT_2_3_26:I
            if_icmplt 5
            iconst_1
            goto 6
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder freemarker.template.Version
      StackMap stack: freemarker.ext.beans.ClassIntrospectorBuilder
         5: iconst_0
         6: .line 65
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder freemarker.template.Version
      StackMap stack: freemarker.ext.beans.ClassIntrospectorBuilder int
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
         7: .line 67
            return
        end local 1 // freemarker.template.Version incompatibleImprovements
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    8     0                      this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    8     1  incompatibleImprovements  Lfreemarker/template/Version;
    MethodParameters:
                          Name  Flags
      incompatibleImprovements  

  protected java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 72
            aload 0 /* this */
            invokespecial java.lang.Object.clone:()Ljava/lang/Object;
         1: areturn
         2: .line 73
      StackMap locals:
      StackMap stack: java.lang.CloneNotSupportedException
            astore 1 /* e */
        start local 1 // java.lang.CloneNotSupportedException e
         3: .line 74
            new java.lang.RuntimeException
            dup
            ldc "Failed to clone ClassIntrospectorBuilder"
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.CloneNotSupportedException e
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            3    4     1     e  Ljava/lang/CloneNotSupportedException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.CloneNotSupportedException

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 81
            iconst_1
            istore 1 /* result */
        start local 1 // int result
         1: .line 82
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
            ifeq 2
            sipush 1231
            goto 3
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder int
      StackMap stack: int
         2: sipush 1237
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder int
      StackMap stack: int int
         3: iadd
            istore 1 /* result */
         4: .line 83
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
            ifeq 5
            sipush 1231
            goto 6
      StackMap locals:
      StackMap stack: int
         5: sipush 1237
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder int
      StackMap stack: int int
         6: iadd
            istore 1 /* result */
         7: .line 84
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
            ifeq 8
            sipush 1231
            goto 9
      StackMap locals:
      StackMap stack: int
         8: sipush 1237
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder int
      StackMap stack: int int
         9: iadd
            istore 1 /* result */
        10: .line 85
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
            iadd
            istore 1 /* result */
        11: .line 86
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            iadd
            istore 1 /* result */
        12: .line 87
            bipush 31
            iload 1 /* result */
            imul
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            iadd
            istore 1 /* result */
        13: .line 88
            iload 1 /* result */
            ireturn
        end local 1 // int result
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            1   14     1  result  I

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // java.lang.Object obj
         0: .line 93
            aload 0 /* this */
            aload 1 /* obj */
            if_acmpne 1
            iconst_1
            ireturn
         1: .line 94
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            ifnonnull 2
            iconst_0
            ireturn
         2: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 3
            iconst_0
            ireturn
         3: .line 96
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            checkcast freemarker.ext.beans.ClassIntrospectorBuilder
            astore 2 /* other */
        start local 2 // freemarker.ext.beans.ClassIntrospectorBuilder other
         4: .line 98
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
            if_icmpeq 5
            iconst_0
            ireturn
         5: .line 99
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
            if_icmpeq 6
            iconst_0
            ireturn
         6: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
            if_icmpeq 7
            iconst_0
            ireturn
         7: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
            if_icmpeq 8
            iconst_0
            ireturn
         8: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            if_acmpeq 9
            iconst_0
            ireturn
         9: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            aload 2 /* other */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            if_acmpeq 10
            iconst_0
            ireturn
        10: .line 105
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // freemarker.ext.beans.ClassIntrospectorBuilder other
        end local 1 // java.lang.Object obj
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0   11     1    obj  Ljava/lang/Object;
            4   11     2  other  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
    MethodParameters:
      Name  Flags
      obj   

  public int getExposureLevel();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 109
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;

  public void setExposureLevel(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // int exposureLevel
         0: .line 114
            iload 1 /* exposureLevel */
            iflt 1
            iload 1 /* exposureLevel */
            iconst_3
            if_icmple 2
         1: .line 115
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Illegal exposure level: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* exposureLevel */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* exposureLevel */
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposureLevel:I
         3: .line 119
            return
        end local 1 // int exposureLevel
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    4     1  exposureLevel  I
    MethodParameters:
               Name  Flags
      exposureLevel  

  public boolean getExposeFields();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 122
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;

  public void setExposeFields(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // boolean exposeFields
         0: .line 127
            aload 0 /* this */
            iload 1 /* exposeFields */
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.exposeFields:Z
         1: .line 128
            return
        end local 1 // boolean exposeFields
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    2     1  exposeFields  Z
    MethodParameters:
              Name  Flags
      exposeFields  

  public boolean getTreatDefaultMethodsAsBeanMembers();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 131
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;

  public void setTreatDefaultMethodsAsBeanMembers(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // boolean treatDefaultMethodsAsBeanMembers
         0: .line 135
            aload 0 /* this */
            iload 1 /* treatDefaultMethodsAsBeanMembers */
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.treatDefaultMethodsAsBeanMembers:Z
         1: .line 136
            return
        end local 1 // boolean treatDefaultMethodsAsBeanMembers
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot                              Name  Signature
            0    2     0                              this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    2     1  treatDefaultMethodsAsBeanMembers  Z
    MethodParameters:
                                  Name  Flags
      treatDefaultMethodsAsBeanMembers  

  public freemarker.ext.beans.MethodAppearanceFineTuner getMethodAppearanceFineTuner();
    descriptor: ()Lfreemarker/ext/beans/MethodAppearanceFineTuner;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 139
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            areturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;

  public void setMethodAppearanceFineTuner(freemarker.ext.beans.MethodAppearanceFineTuner);
    descriptor: (Lfreemarker/ext/beans/MethodAppearanceFineTuner;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // freemarker.ext.beans.MethodAppearanceFineTuner methodAppearanceFineTuner
         0: .line 143
            aload 0 /* this */
            aload 1 /* methodAppearanceFineTuner */
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
         1: .line 144
            return
        end local 1 // freemarker.ext.beans.MethodAppearanceFineTuner methodAppearanceFineTuner
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    2     0                       this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    2     1  methodAppearanceFineTuner  Lfreemarker/ext/beans/MethodAppearanceFineTuner;
    MethodParameters:
                           Name  Flags
      methodAppearanceFineTuner  

  public freemarker.ext.beans.MethodSorter getMethodSorter();
    descriptor: ()Lfreemarker/ext/beans/MethodSorter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 147
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            areturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;

  public void setMethodSorter(freemarker.ext.beans.MethodSorter);
    descriptor: (Lfreemarker/ext/beans/MethodSorter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
        start local 1 // freemarker.ext.beans.MethodSorter methodSorter
         0: .line 151
            aload 0 /* this */
            aload 1 /* methodSorter */
            putfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
         1: .line 152
            return
        end local 1 // freemarker.ext.beans.MethodSorter methodSorter
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    2     1  methodSorter  Lfreemarker/ext/beans/MethodSorter;
    MethodParameters:
              Name  Flags
      methodSorter  

  private static void removeClearedReferencesFromInstanceCache();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=0
         0: .line 156
            goto 12
        start local 0 // java.lang.ref.Reference clearedRef
         1: .line 157
      StackMap locals: java.lang.ref.Reference
      StackMap stack:
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            dup
            astore 1
            monitorenter
         2: .line 158
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2 /* it */
        start local 2 // java.util.Iterator it
         3: goto 7
         4: .line 159
      StackMap locals: java.util.Map java.util.Iterator
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            aload 0 /* clearedRef */
            if_acmpne 7
         5: .line 160
            aload 2 /* it */
            invokeinterface java.util.Iterator.remove:()V
         6: .line 161
            goto 8
         7: .line 158
      StackMap locals:
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 2 // java.util.Iterator it
         8: .line 157
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        end local 0 // java.lang.ref.Reference clearedRef
        12: .line 156
      StackMap locals:
      StackMap stack:
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE_REF_QUEUE:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            dup
            astore 0 /* clearedRef */
        start local 0 // java.lang.ref.Reference clearedRef
        13: ifnonnull 1
        14: .line 166
            return
        end local 0 // java.lang.ref.Reference clearedRef
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            1   12     0  clearedRef  Ljava/lang/ref/Reference;
           13   15     0  clearedRef  Ljava/lang/ref/Reference;
            3    8     2          it  Ljava/util/Iterator;
      Exception table:
        from    to  target  type
           2     9      10  any
          10    11      10  any

  static void clearInstanceCache();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 170
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            dup
            astore 0
            monitorenter
         1: .line 171
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         2: .line 170
            aload 0
            monitorexit
         3: goto 6
      StackMap locals: java.util.Map
      StackMap stack: java.lang.Throwable
         4: aload 0
            monitorexit
         5: athrow
         6: .line 173
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  static java.util.Map getInstanceCache();
    descriptor: ()Ljava/util/Map;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 177
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  freemarker.ext.beans.ClassIntrospector build();
    descriptor: ()Lfreemarker/ext/beans/ClassIntrospector;
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 185
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            ifnull 1
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            instanceof freemarker.ext.beans.SingletonCustomizer
            ifeq 17
         1: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            ifnull 2
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            instanceof freemarker.ext.beans.SingletonCustomizer
            ifeq 17
         2: .line 189
      StackMap locals:
      StackMap stack:
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            dup
            astore 2
            monitorenter
         3: .line 190
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            aload 0 /* this */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.Reference
            astore 3 /* instanceRef */
        start local 3 // java.lang.ref.Reference instanceRef
         4: .line 191
            aload 3 /* instanceRef */
            ifnull 5
            aload 3 /* instanceRef */
            invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
            checkcast freemarker.ext.beans.ClassIntrospector
            goto 6
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder top java.util.Map java.lang.ref.Reference
      StackMap stack:
         5: aconst_null
      StackMap locals:
      StackMap stack: freemarker.ext.beans.ClassIntrospector
         6: astore 1 /* instance */
        start local 1 // freemarker.ext.beans.ClassIntrospector instance
         7: .line 192
            aload 1 /* instance */
            ifnonnull 11
         8: .line 193
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.clone:()Ljava/lang/Object;
            checkcast freemarker.ext.beans.ClassIntrospectorBuilder
            astore 4 /* thisClone */
        start local 4 // freemarker.ext.beans.ClassIntrospectorBuilder thisClone
         9: .line 194
            new freemarker.ext.beans.ClassIntrospector
            dup
            aload 4 /* thisClone */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            iconst_1
            iconst_1
            invokespecial freemarker.ext.beans.ClassIntrospector.<init>:(Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;ZZ)V
            astore 1 /* instance */
        10: .line 195
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE:Ljava/util/Map;
            aload 4 /* thisClone */
            new java.lang.ref.WeakReference
            dup
            aload 1 /* instance */
            getstatic freemarker.ext.beans.ClassIntrospectorBuilder.INSTANCE_CACHE_REF_QUEUE:Ljava/lang/ref/ReferenceQueue;
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // freemarker.ext.beans.ClassIntrospectorBuilder thisClone
        end local 3 // java.lang.ref.Reference instanceRef
        11: .line 189
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder freemarker.ext.beans.ClassIntrospector java.util.Map
      StackMap stack:
            aload 2
            monitorexit
        12: goto 15
        end local 1 // freemarker.ext.beans.ClassIntrospector instance
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder top java.util.Map
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        start local 1 // freemarker.ext.beans.ClassIntrospector instance
        15: .line 199
      StackMap locals: freemarker.ext.beans.ClassIntrospectorBuilder freemarker.ext.beans.ClassIntrospector
      StackMap stack:
            invokestatic freemarker.ext.beans.ClassIntrospectorBuilder.removeClearedReferencesFromInstanceCache:()V
        16: .line 201
            aload 1 /* instance */
            areturn
        end local 1 // freemarker.ext.beans.ClassIntrospector instance
        17: .line 206
      StackMap locals:
      StackMap stack:
            new freemarker.ext.beans.ClassIntrospector
            dup
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            iconst_1
            iconst_0
            invokespecial freemarker.ext.beans.ClassIntrospector.<init>:(Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;ZZ)V
            areturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0         this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            7   13     1     instance  Lfreemarker/ext/beans/ClassIntrospector;
           15   17     1     instance  Lfreemarker/ext/beans/ClassIntrospector;
            4   11     3  instanceRef  Ljava/lang/ref/Reference;
            9   11     4    thisClone  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
      Exception table:
        from    to  target  type
           3    12      13  any
          13    14      13  any

  public boolean isBugfixed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
         0: .line 211
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospectorBuilder.bugfixed:Z
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospectorBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
}
SourceFile: "ClassIntrospectorBuilder.java"