public class freemarker.ext.beans._BeansAPI
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: freemarker.ext.beans._BeansAPI
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans._BeansAPI this
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // freemarker.ext.beans._BeansAPI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/_BeansAPI;

  public static java.lang.String getAsClassicCompatibleString(freemarker.ext.beans.BeanModel);
    descriptor: (Lfreemarker/ext/beans/BeanModel;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.BeanModel bm
         0: .line 49
            aload 0 /* bm */
            invokevirtual freemarker.ext.beans.BeanModel.getAsClassicCompatibleString:()Ljava/lang/String;
            areturn
        end local 0 // freemarker.ext.beans.BeanModel bm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    bm  Lfreemarker/ext/beans/BeanModel;
    MethodParameters:
      Name  Flags
      bm    

  public static  newInstance(java.lang.Class<?>, [], freemarker.ext.beans.BeansWrapper);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Object;Lfreemarker/ext/beans/BeansWrapper;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.Class pClass
        start local 1 // java.lang.Object[] args
        start local 2 // freemarker.ext.beans.BeansWrapper bw
         0: .line 55
            aload 0 /* pClass */
            aload 1 /* args */
            invokestatic freemarker.ext.beans._BeansAPI.getConstructorDescriptor:(Ljava/lang/Class;[Ljava/lang/Object;)Lfreemarker/ext/beans/CallableMemberDescriptor;
            aload 1 /* args */
            aload 2 /* bw */
            invokestatic freemarker.ext.beans._BeansAPI.newInstance:(Lfreemarker/ext/beans/CallableMemberDescriptor;[Ljava/lang/Object;Lfreemarker/ext/beans/BeansWrapper;)Ljava/lang/Object;
            areturn
        end local 2 // freemarker.ext.beans.BeansWrapper bw
        end local 1 // java.lang.Object[] args
        end local 0 // java.lang.Class pClass
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  pClass  Ljava/lang/Class<*>;
            0    1     1    args  [Ljava/lang/Object;
            0    1     2      bw  Lfreemarker/ext/beans/BeansWrapper;
    Exceptions:
      throws java.lang.NoSuchMethodException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, freemarker.template.TemplateModelException
    Signature: (Ljava/lang/Class<*>;[Ljava/lang/Object;Lfreemarker/ext/beans/BeansWrapper;)Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      pClass  
      args    
      bw      

  private static freemarker.ext.beans.CallableMemberDescriptor getConstructorDescriptor(java.lang.Class<?>, []);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Object;)Lfreemarker/ext/beans/CallableMemberDescriptor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // java.lang.Class pClass
        start local 1 // java.lang.Object[] args
         0: .line 65
            aload 1 /* args */
            ifnonnull 1
            getstatic freemarker.template.utility.CollectionUtils.EMPTY_OBJECT_ARRAY:[Ljava/lang/Object;
            astore 1 /* args */
         1: .line 67
      StackMap locals:
      StackMap stack:
            new freemarker.ext.beans.ArgumentTypes
            dup
            aload 1 /* args */
            iconst_1
            invokespecial freemarker.ext.beans.ArgumentTypes.<init>:([Ljava/lang/Object;Z)V
            astore 2 /* argTypes */
        start local 2 // freemarker.ext.beans.ArgumentTypes argTypes
         2: .line 69
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
         3: .line 68
            astore 3 /* fixedArgMemberDescs */
        start local 3 // java.util.List fixedArgMemberDescs
         4: .line 71
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
         5: .line 70
            astore 4 /* varArgsMemberDescs */
        start local 4 // java.util.List varArgsMemberDescs
         6: .line 72
            aload 0 /* pClass */
            invokevirtual java.lang.Class.getConstructors:()[Ljava/lang/reflect/Constructor;
            astore 5 /* constrs */
        start local 5 // java.lang.reflect.Constructor[] constrs
         7: .line 73
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         8: goto 16
         9: .line 74
      StackMap locals: java.lang.Class java.lang.Object[] freemarker.ext.beans.ArgumentTypes java.util.List java.util.List java.lang.reflect.Constructor[] int
      StackMap stack:
            aload 5 /* constrs */
            iload 6 /* i */
            aaload
            astore 7 /* constr */
        start local 7 // java.lang.reflect.Constructor constr
        10: .line 75
            new freemarker.ext.beans.ReflectionCallableMemberDescriptor
            dup
            aload 7 /* constr */
            aload 7 /* constr */
            invokevirtual java.lang.reflect.Constructor.getParameterTypes:()[Ljava/lang/Class;
            invokespecial freemarker.ext.beans.ReflectionCallableMemberDescriptor.<init>:(Ljava/lang/reflect/Constructor;[Ljava/lang/Class;)V
            astore 8 /* memberDesc */
        start local 8 // freemarker.ext.beans.ReflectionCallableMemberDescriptor memberDesc
        11: .line 76
            aload 7 /* constr */
            invokestatic freemarker.ext.beans._MethodUtil.isVarargs:(Ljava/lang/reflect/Member;)Z
            ifne 14
        12: .line 77
            aload 3 /* fixedArgMemberDescs */
            aload 8 /* memberDesc */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 78
            goto 15
        14: .line 79
      StackMap locals: java.lang.reflect.Constructor freemarker.ext.beans.ReflectionCallableMemberDescriptor
      StackMap stack:
            aload 4 /* varArgsMemberDescs */
            aload 8 /* memberDesc */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // freemarker.ext.beans.ReflectionCallableMemberDescriptor memberDesc
        end local 7 // java.lang.reflect.Constructor constr
        15: .line 73
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* i */
            aload 5 /* constrs */
            arraylength
            if_icmplt 9
        end local 6 // int i
        17: .line 83
            aload 2 /* argTypes */
            aload 3 /* fixedArgMemberDescs */
            iconst_0
            invokevirtual freemarker.ext.beans.ArgumentTypes.getMostSpecific:(Ljava/util/List;Z)Lfreemarker/ext/beans/MaybeEmptyCallableMemberDescriptor;
            astore 6 /* contrDesc */
        start local 6 // freemarker.ext.beans.MaybeEmptyCallableMemberDescriptor contrDesc
        18: .line 84
            aload 6 /* contrDesc */
            getstatic freemarker.ext.beans.EmptyCallableMemberDescriptor.NO_SUCH_METHOD:Lfreemarker/ext/beans/EmptyCallableMemberDescriptor;
            if_acmpne 20
        19: .line 85
            aload 2 /* argTypes */
            aload 4 /* varArgsMemberDescs */
            iconst_1
            invokevirtual freemarker.ext.beans.ArgumentTypes.getMostSpecific:(Ljava/util/List;Z)Lfreemarker/ext/beans/MaybeEmptyCallableMemberDescriptor;
            astore 6 /* contrDesc */
        20: .line 88
      StackMap locals: java.lang.Class java.lang.Object[] freemarker.ext.beans.ArgumentTypes java.util.List java.util.List java.lang.reflect.Constructor[] freemarker.ext.beans.MaybeEmptyCallableMemberDescriptor
      StackMap stack:
            aload 6 /* contrDesc */
            instanceof freemarker.ext.beans.EmptyCallableMemberDescriptor
            ifeq 34
        21: .line 89
            aload 6 /* contrDesc */
            getstatic freemarker.ext.beans.EmptyCallableMemberDescriptor.NO_SUCH_METHOD:Lfreemarker/ext/beans/EmptyCallableMemberDescriptor;
            if_acmpne 27
        22: .line 90
            new java.lang.NoSuchMethodException
            dup
        23: .line 91
            new java.lang.StringBuilder
            dup
            ldc "There's no public "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 92
            ldc " constructor with compatible parameter list."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 91
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 90
            invokespecial java.lang.NoSuchMethodException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 93
      StackMap locals:
      StackMap stack:
            aload 6 /* contrDesc */
            getstatic freemarker.ext.beans.EmptyCallableMemberDescriptor.AMBIGUOUS_METHOD:Lfreemarker/ext/beans/EmptyCallableMemberDescriptor;
            if_acmpne 33
        28: .line 94
            new java.lang.NoSuchMethodException
            dup
        29: .line 95
            new java.lang.StringBuilder
            dup
            ldc "There are multiple public "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        30: .line 96
            ldc " constructors that match the compatible parameter list with the same preferability."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        31: .line 95
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        32: .line 94
            invokespecial java.lang.NoSuchMethodException.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 98
      StackMap locals:
      StackMap stack:
            new java.lang.NoSuchMethodException
            dup
            invokespecial java.lang.NoSuchMethodException.<init>:()V
            athrow
        34: .line 101
      StackMap locals:
      StackMap stack:
            aload 6 /* contrDesc */
            checkcast freemarker.ext.beans.CallableMemberDescriptor
            areturn
        end local 6 // freemarker.ext.beans.MaybeEmptyCallableMemberDescriptor contrDesc
        end local 5 // java.lang.reflect.Constructor[] constrs
        end local 4 // java.util.List varArgsMemberDescs
        end local 3 // java.util.List fixedArgMemberDescs
        end local 2 // freemarker.ext.beans.ArgumentTypes argTypes
        end local 1 // java.lang.Object[] args
        end local 0 // java.lang.Class pClass
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   35     0               pClass  Ljava/lang/Class<*>;
            0   35     1                 args  [Ljava/lang/Object;
            2   35     2             argTypes  Lfreemarker/ext/beans/ArgumentTypes;
            4   35     3  fixedArgMemberDescs  Ljava/util/List<Lfreemarker/ext/beans/ReflectionCallableMemberDescriptor;>;
            6   35     4   varArgsMemberDescs  Ljava/util/List<Lfreemarker/ext/beans/ReflectionCallableMemberDescriptor;>;
            7   35     5              constrs  [Ljava/lang/reflect/Constructor;
            8   17     6                    i  I
           10   15     7               constr  Ljava/lang/reflect/Constructor<*>;
           11   15     8           memberDesc  Lfreemarker/ext/beans/ReflectionCallableMemberDescriptor;
           18   35     6            contrDesc  Lfreemarker/ext/beans/MaybeEmptyCallableMemberDescriptor;
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;[Ljava/lang/Object;)Lfreemarker/ext/beans/CallableMemberDescriptor;
    MethodParameters:
        Name  Flags
      pClass  
      args    

  private static java.lang.Object newInstance(freemarker.ext.beans.CallableMemberDescriptor, java.lang.Object[], freemarker.ext.beans.BeansWrapper);
    descriptor: (Lfreemarker/ext/beans/CallableMemberDescriptor;[Ljava/lang/Object;Lfreemarker/ext/beans/BeansWrapper;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // freemarker.ext.beans.CallableMemberDescriptor constrDesc
        start local 1 // java.lang.Object[] args
        start local 2 // freemarker.ext.beans.BeansWrapper bw
         0: .line 108
            aload 1 /* args */
            ifnonnull 1
            getstatic freemarker.template.utility.CollectionUtils.EMPTY_OBJECT_ARRAY:[Ljava/lang/Object;
            astore 1 /* args */
         1: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* constrDesc */
            invokevirtual freemarker.ext.beans.CallableMemberDescriptor.isVarargs:()Z
            ifeq 20
         2: .line 114
            aload 0 /* constrDesc */
            invokevirtual freemarker.ext.beans.CallableMemberDescriptor.getParamTypes:()[Ljava/lang/Class;
            astore 4 /* paramTypes */
        start local 4 // java.lang.Class[] paramTypes
         3: .line 115
            aload 4 /* paramTypes */
            arraylength
            iconst_1
            isub
            istore 5 /* fixedArgCnt */
        start local 5 // int fixedArgCnt
         4: .line 117
            iload 5 /* fixedArgCnt */
            iconst_1
            iadd
            anewarray java.lang.Object
            astore 3 /* packedArgs */
        start local 3 // java.lang.Object[] packedArgs
         5: .line 118
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         6: goto 9
         7: .line 119
      StackMap locals: freemarker.ext.beans.CallableMemberDescriptor java.lang.Object[] freemarker.ext.beans.BeansWrapper java.lang.Object[] java.lang.Class[] int int
      StackMap stack:
            aload 3 /* packedArgs */
            iload 6 /* i */
            aload 1 /* args */
            iload 6 /* i */
            aaload
            aastore
         8: .line 118
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            iload 5 /* fixedArgCnt */
            if_icmplt 7
        end local 6 // int i
        10: .line 122
            aload 4 /* paramTypes */
            iload 5 /* fixedArgCnt */
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 6 /* compType */
        start local 6 // java.lang.Class compType
        11: .line 123
            aload 1 /* args */
            arraylength
            iload 5 /* fixedArgCnt */
            isub
            istore 7 /* varArgCnt */
        start local 7 // int varArgCnt
        12: .line 124
            aload 6 /* compType */
            iload 7 /* varArgCnt */
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 8 /* varArgsArray */
        start local 8 // java.lang.Object varArgsArray
        13: .line 125
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        14: goto 17
        15: .line 126
      StackMap locals: freemarker.ext.beans.CallableMemberDescriptor java.lang.Object[] freemarker.ext.beans.BeansWrapper java.lang.Object[] java.lang.Class[] int java.lang.Class int java.lang.Object int
      StackMap stack:
            aload 8 /* varArgsArray */
            iload 9 /* i */
            aload 1 /* args */
            iload 5 /* fixedArgCnt */
            iload 9 /* i */
            iadd
            aaload
            invokestatic java.lang.reflect.Array.set:(Ljava/lang/Object;ILjava/lang/Object;)V
        16: .line 125
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 9 /* i */
            iload 7 /* varArgCnt */
            if_icmplt 15
        end local 9 // int i
        18: .line 128
            aload 3 /* packedArgs */
            iload 5 /* fixedArgCnt */
            aload 8 /* varArgsArray */
            aastore
        end local 8 // java.lang.Object varArgsArray
        end local 7 // int varArgCnt
        end local 6 // java.lang.Class compType
        end local 5 // int fixedArgCnt
        end local 4 // java.lang.Class[] paramTypes
        19: .line 129
            goto 21
        end local 3 // java.lang.Object[] packedArgs
        20: .line 130
      StackMap locals: freemarker.ext.beans.CallableMemberDescriptor java.lang.Object[] freemarker.ext.beans.BeansWrapper
      StackMap stack:
            aload 1 /* args */
            astore 3 /* packedArgs */
        start local 3 // java.lang.Object[] packedArgs
        21: .line 133
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 0 /* constrDesc */
            aload 2 /* bw */
            aload 3 /* packedArgs */
            invokevirtual freemarker.ext.beans.CallableMemberDescriptor.invokeConstructor:(Lfreemarker/ext/beans/BeansWrapper;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object[] packedArgs
        end local 2 // freemarker.ext.beans.BeansWrapper bw
        end local 1 // java.lang.Object[] args
        end local 0 // freemarker.ext.beans.CallableMemberDescriptor constrDesc
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0    constrDesc  Lfreemarker/ext/beans/CallableMemberDescriptor;
            0   22     1          args  [Ljava/lang/Object;
            0   22     2            bw  Lfreemarker/ext/beans/BeansWrapper;
            5   20     3    packedArgs  [Ljava/lang/Object;
           21   22     3    packedArgs  [Ljava/lang/Object;
            3   19     4    paramTypes  [Ljava/lang/Class;
            4   19     5   fixedArgCnt  I
            6   10     6             i  I
           11   19     6      compType  Ljava/lang/Class<*>;
           12   19     7     varArgCnt  I
           13   19     8  varArgsArray  Ljava/lang/Object;
           14   18     9             i  I
    Exceptions:
      throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.IllegalArgumentException, freemarker.template.TemplateModelException
    MethodParameters:
            Name  Flags
      constrDesc  
      args        
      bw          

  public static <BW extends freemarker.ext.beans.BeansWrapper, BWC extends freemarker.ext.beans.BeansWrapperConfiguration> BW getBeansWrapperSubclassSingleton(BWC, java.util.Map<java.lang.ClassLoader, java.util.Map<BWC, java.lang.ref.WeakReference<BW>>>, java.lang.ref.ReferenceQueue<BW>, freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory<BW, BWC>);
    descriptor: (Lfreemarker/ext/beans/BeansWrapperConfiguration;Ljava/util/Map;Ljava/lang/ref/ReferenceQueue;Lfreemarker/ext/beans/_BeansAPI$_BeansWrapperSubclassFactory;)Lfreemarker/ext/beans/BeansWrapper;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=4
        start local 0 // freemarker.ext.beans.BeansWrapperConfiguration settings
        start local 1 // java.util.Map instanceCache
        start local 2 // java.lang.ref.ReferenceQueue instanceCacheRefQue
        start local 3 // freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory beansWrapperSubclassFactory
         0: .line 151
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* tccl */
        start local 4 // java.lang.ClassLoader tccl
         1: .line 155
            aload 1 /* instanceCache */
            dup
            astore 7
            monitorenter
         2: .line 156
            aload 1 /* instanceCache */
            aload 4 /* tccl */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 6 /* tcclScopedCache */
        start local 6 // java.util.Map tcclScopedCache
         3: .line 157
            aload 6 /* tcclScopedCache */
            ifnonnull 8
         4: .line 158
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 6 /* tcclScopedCache */
         5: .line 159
            aload 1 /* instanceCache */
            aload 4 /* tccl */
            aload 6 /* tcclScopedCache */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 160
            aconst_null
            astore 5 /* instanceRef */
        start local 5 // java.lang.ref.Reference instanceRef
         7: .line 161
            goto 9
        end local 5 // java.lang.ref.Reference instanceRef
         8: .line 162
      StackMap locals: freemarker.ext.beans.BeansWrapperConfiguration java.util.Map java.lang.ref.ReferenceQueue freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory java.lang.ClassLoader top java.util.Map java.util.Map
      StackMap stack:
            aload 6 /* tcclScopedCache */
            aload 0 /* settings */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.Reference
            astore 5 /* instanceRef */
        start local 5 // java.lang.ref.Reference instanceRef
         9: .line 155
      StackMap locals: freemarker.ext.beans.BeansWrapperConfiguration java.util.Map java.lang.ref.ReferenceQueue freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory java.lang.ClassLoader java.lang.ref.Reference java.util.Map java.util.Map
      StackMap stack:
            aload 7
            monitorexit
        10: goto 13
        end local 6 // java.util.Map tcclScopedCache
        end local 5 // java.lang.ref.Reference instanceRef
      StackMap locals: freemarker.ext.beans.BeansWrapperConfiguration java.util.Map java.lang.ref.ReferenceQueue freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory java.lang.ClassLoader top top java.util.Map
      StackMap stack: java.lang.Throwable
        11: aload 7
            monitorexit
        12: athrow
        start local 5 // java.lang.ref.Reference instanceRef
        start local 6 // java.util.Map tcclScopedCache
        13: .line 166
      StackMap locals: freemarker.ext.beans.BeansWrapperConfiguration java.util.Map java.lang.ref.ReferenceQueue freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory java.lang.ClassLoader java.lang.ref.Reference java.util.Map
      StackMap stack:
            aload 5 /* instanceRef */
            ifnull 14
            aload 5 /* instanceRef */
            invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
            checkcast freemarker.ext.beans.BeansWrapper
            goto 15
      StackMap locals:
      StackMap stack:
        14: aconst_null
      StackMap locals:
      StackMap stack: freemarker.ext.beans.BeansWrapper
        15: astore 7 /* instance */
        start local 7 // freemarker.ext.beans.BeansWrapper instance
        16: .line 167
            aload 7 /* instance */
            ifnull 18
        17: .line 168
            aload 7 /* instance */
            areturn
        18: .line 172
      StackMap locals: freemarker.ext.beans.BeansWrapper
      StackMap stack:
            aload 0 /* settings */
            invokestatic freemarker.ext.beans._BeansAPI.clone:(Lfreemarker/ext/beans/BeansWrapperConfiguration;)Lfreemarker/ext/beans/BeansWrapperConfiguration;
            astore 0 /* settings */
        19: .line 173
            aload 3 /* beansWrapperSubclassFactory */
            aload 0 /* settings */
            invokeinterface freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory.create:(Lfreemarker/ext/beans/BeansWrapperConfiguration;)Lfreemarker/ext/beans/BeansWrapper;
            astore 7 /* instance */
        20: .line 174
            aload 7 /* instance */
            invokevirtual freemarker.ext.beans.BeansWrapper.isWriteProtected:()Z
            ifne 22
        21: .line 175
            new freemarker.core.BugException
            dup
            invokespecial freemarker.core.BugException.<init>:()V
            athrow
        22: .line 178
      StackMap locals:
      StackMap stack:
            aload 1 /* instanceCache */
            dup
            astore 8
            monitorenter
        23: .line 179
            aload 6 /* tcclScopedCache */
            aload 0 /* settings */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.Reference
            astore 5 /* instanceRef */
        24: .line 180
            aload 5 /* instanceRef */
            ifnull 25
            aload 5 /* instanceRef */
            invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
            checkcast freemarker.ext.beans.BeansWrapper
            goto 26
      StackMap locals: java.util.Map
      StackMap stack:
        25: aconst_null
      StackMap locals:
      StackMap stack: freemarker.ext.beans.BeansWrapper
        26: astore 9 /* concurrentInstance */
        start local 9 // freemarker.ext.beans.BeansWrapper concurrentInstance
        27: .line 181
            aload 9 /* concurrentInstance */
            ifnonnull 30
        28: .line 182
            aload 6 /* tcclScopedCache */
            aload 0 /* settings */
            new java.lang.ref.WeakReference
            dup
            aload 7 /* instance */
            aload 2 /* instanceCacheRefQue */
            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
        29: .line 183
            goto 31
        30: .line 184
      StackMap locals: freemarker.ext.beans.BeansWrapper
      StackMap stack:
            aload 9 /* concurrentInstance */
            astore 7 /* instance */
        end local 9 // freemarker.ext.beans.BeansWrapper concurrentInstance
        31: .line 178
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 8
            monitorexit
        34: athrow
        35: .line 188
      StackMap locals:
      StackMap stack:
            aload 1 /* instanceCache */
            aload 2 /* instanceCacheRefQue */
            invokestatic freemarker.ext.beans._BeansAPI.removeClearedReferencesFromCache:(Ljava/util/Map;Ljava/lang/ref/ReferenceQueue;)V
        36: .line 190
            aload 7 /* instance */
            areturn
        end local 7 // freemarker.ext.beans.BeansWrapper instance
        end local 6 // java.util.Map tcclScopedCache
        end local 5 // java.lang.ref.Reference instanceRef
        end local 4 // java.lang.ClassLoader tccl
        end local 3 // freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory beansWrapperSubclassFactory
        end local 2 // java.lang.ref.ReferenceQueue instanceCacheRefQue
        end local 1 // java.util.Map instanceCache
        end local 0 // freemarker.ext.beans.BeansWrapperConfiguration settings
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   37     0                     settings  TBWC;
            0   37     1                instanceCache  Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;>;
            0   37     2          instanceCacheRefQue  Ljava/lang/ref/ReferenceQueue<TBW;>;
            0   37     3  beansWrapperSubclassFactory  Lfreemarker/ext/beans/_BeansAPI$_BeansWrapperSubclassFactory<TBW;TBWC;>;
            1   37     4                         tccl  Ljava/lang/ClassLoader;
            7    8     5                  instanceRef  Ljava/lang/ref/Reference<TBW;>;
            9   11     5                  instanceRef  Ljava/lang/ref/Reference<TBW;>;
           13   37     5                  instanceRef  Ljava/lang/ref/Reference<TBW;>;
            3   11     6              tcclScopedCache  Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;
           13   37     6              tcclScopedCache  Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;
           16   37     7                     instance  TBW;
           27   31     9           concurrentInstance  TBW;
      Exception table:
        from    to  target  type
           2    10      11  any
          11    12      11  any
          23    32      33  any
          33    34      33  any
    Signature: <BW:Lfreemarker/ext/beans/BeansWrapper;BWC:Lfreemarker/ext/beans/BeansWrapperConfiguration;>(TBWC;Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;>;Ljava/lang/ref/ReferenceQueue<TBW;>;Lfreemarker/ext/beans/_BeansAPI$_BeansWrapperSubclassFactory<TBW;TBWC;>;)TBW;
    MethodParameters:
                             Name  Flags
      settings                     
      instanceCache                
      instanceCacheRefQue          
      beansWrapperSubclassFactory  

  private static <BWC extends freemarker.ext.beans.BeansWrapperConfiguration> BWC clone();
    descriptor: (Lfreemarker/ext/beans/BeansWrapperConfiguration;)Lfreemarker/ext/beans/BeansWrapperConfiguration;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.BeansWrapperConfiguration settings
         0: .line 195
            aload 0 /* settings */
            iconst_1
            invokevirtual freemarker.ext.beans.BeansWrapperConfiguration.clone:(Z)Ljava/lang/Object;
            checkcast freemarker.ext.beans.BeansWrapperConfiguration
            areturn
        end local 0 // freemarker.ext.beans.BeansWrapperConfiguration settings
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  settings  TBWC;
    Signature: <BWC:Lfreemarker/ext/beans/BeansWrapperConfiguration;>(TBWC;)TBWC;
    MethodParameters:
          Name  Flags
      settings  

  private static <BW extends freemarker.ext.beans.BeansWrapper, BWC extends freemarker.ext.beans.BeansWrapperConfiguration> void removeClearedReferencesFromCache(java.util.Map<java.lang.ClassLoader, java.util.Map<BWC, java.lang.ref.WeakReference<BW>>>, java.lang.ref.ReferenceQueue<BW>);
    descriptor: (Ljava/util/Map;Ljava/lang/ref/ReferenceQueue;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // java.util.Map instanceCache
        start local 1 // java.lang.ref.ReferenceQueue instanceCacheRefQue
         0: .line 203
            goto 15
        start local 2 // java.lang.ref.Reference clearedRef
         1: .line 204
      StackMap locals: java.lang.ref.Reference
      StackMap stack:
            aload 0 /* instanceCache */
            dup
            astore 3
            monitorenter
         2: .line 205
            aload 0 /* instanceCache */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 10
      StackMap locals: java.util.Map java.lang.ref.ReferenceQueue java.lang.ref.Reference java.util.Map top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 4 /* tcclScopedCache */
        start local 4 // java.util.Map tcclScopedCache
         4: .line 206
            aload 4 /* tcclScopedCache */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6 /* it2 */
        start local 6 // java.util.Iterator it2
         5: goto 9
         6: .line 207
      StackMap locals: java.util.Map java.lang.ref.ReferenceQueue java.lang.ref.Reference java.util.Map java.util.Map java.util.Iterator java.util.Iterator
      StackMap stack:
            aload 6 /* it2 */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            aload 2 /* clearedRef */
            if_acmpne 9
         7: .line 208
            aload 6 /* it2 */
            invokeinterface java.util.Iterator.remove:()V
         8: .line 209
            goto 11
         9: .line 206
      StackMap locals:
      StackMap stack:
            aload 6 /* it2 */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 6 // java.util.Iterator it2
        end local 4 // java.util.Map tcclScopedCache
        10: .line 205
      StackMap locals: java.util.Map java.lang.ref.ReferenceQueue java.lang.ref.Reference java.util.Map top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        11: .line 204
      StackMap locals: java.util.Map java.lang.ref.ReferenceQueue java.lang.ref.Reference java.util.Map
      StackMap stack:
            aload 3
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 3
            monitorexit
        14: athrow
        end local 2 // java.lang.ref.Reference clearedRef
        15: .line 203
      StackMap locals:
      StackMap stack:
            aload 1 /* instanceCacheRefQue */
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            dup
            astore 2 /* clearedRef */
        start local 2 // java.lang.ref.Reference clearedRef
        16: ifnonnull 1
        17: .line 215
            return
        end local 2 // java.lang.ref.Reference clearedRef
        end local 1 // java.lang.ref.ReferenceQueue instanceCacheRefQue
        end local 0 // java.util.Map instanceCache
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   18     0        instanceCache  Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;>;
            0   18     1  instanceCacheRefQue  Ljava/lang/ref/ReferenceQueue<TBW;>;
            1   15     2           clearedRef  Ljava/lang/ref/Reference<+TBW;>;
           16   18     2           clearedRef  Ljava/lang/ref/Reference<+TBW;>;
            4   10     4      tcclScopedCache  Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;
            5   10     6                  it2  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<TBW;>;>;
      Exception table:
        from    to  target  type
           2    12      13  any
          13    14      13  any
    Signature: <BW:Lfreemarker/ext/beans/BeansWrapper;BWC:Lfreemarker/ext/beans/BeansWrapperConfiguration;>(Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<TBWC;Ljava/lang/ref/WeakReference<TBW;>;>;>;Ljava/lang/ref/ReferenceQueue<TBW;>;)V
    MethodParameters:
                     Name  Flags
      instanceCache        
      instanceCacheRefQue  

  public static freemarker.ext.beans.ClassIntrospectorBuilder getClassIntrospectorBuilder(freemarker.ext.beans.BeansWrapperConfiguration);
    descriptor: (Lfreemarker/ext/beans/BeansWrapperConfiguration;)Lfreemarker/ext/beans/ClassIntrospectorBuilder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.BeansWrapperConfiguration bwc
         0: .line 227
            aload 0 /* bwc */
            invokevirtual freemarker.ext.beans.BeansWrapperConfiguration.getClassIntrospectorBuilder:()Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            areturn
        end local 0 // freemarker.ext.beans.BeansWrapperConfiguration bwc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   bwc  Lfreemarker/ext/beans/BeansWrapperConfiguration;
    MethodParameters:
      Name  Flags
      bwc   
}
SourceFile: "_BeansAPI.java"
NestMembers:
  freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory
InnerClasses:
  public abstract _BeansWrapperSubclassFactory = freemarker.ext.beans._BeansAPI$_BeansWrapperSubclassFactory of freemarker.ext.beans._BeansAPI