class freemarker.ext.beans.ClassIntrospector
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.ext.beans.ClassIntrospector
  super_class: java.lang.Object
{
  private static final freemarker.log.Logger LOG;
    descriptor: Lfreemarker/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String JREBEL_SDK_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.zeroturnaround.javarebel.ClassEventListener"

  private static final java.lang.String JREBEL_INTEGRATION_ERROR_MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Error initializing JRebel integration. JRebel integration disabled."

  static final boolean DEVELOPMENT_MODE;
    descriptor: Z
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final freemarker.ext.beans.ClassChangeNotifier CLASS_CHANGE_NOTIFIER;
    descriptor: Lfreemarker/ext/beans/ClassChangeNotifier;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static final java.lang.Object CONSTRUCTORS_KEY;
    descriptor: Ljava/lang/Object;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final java.lang.Object GENERIC_GET_KEY;
    descriptor: Ljava/lang/Object;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  final int exposureLevel;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  final boolean exposeFields;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final freemarker.ext.beans.MethodAppearanceFineTuner methodAppearanceFineTuner;
    descriptor: Lfreemarker/ext/beans/MethodAppearanceFineTuner;
    flags: (0x0010) ACC_FINAL

  final freemarker.ext.beans.MethodSorter methodSorter;
    descriptor: Lfreemarker/ext/beans/MethodSorter;
    flags: (0x0010) ACC_FINAL

  final boolean treatDefaultMethodsAsBeanMembers;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final boolean bugfixed;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  private final boolean hasSharedInstanceRestrictons;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean shared;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object sharedLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.Class<?>, java.util.Map<java.lang.Object, java.lang.Object>> cache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;>;

  private final java.util.Set<java.lang.String> cacheClassNames;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.util.Set<java.lang.Class<?>> classIntrospectionsInProgress;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Class<*>;>;

  private final java.util.List<java.lang.ref.WeakReference<java.lang.Object>> modelFactories;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;>;

  private final java.lang.ref.ReferenceQueue<java.lang.Object> modelFactoriesRefQueue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=0
         0: .line 74
            ldc "freemarker.beans"
            invokestatic freemarker.log.Logger.getLogger:(Ljava/lang/String;)Lfreemarker/log/Logger;
            putstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
         1: .line 84
            ldc "true"
            ldc "freemarker.development"
         2: .line 85
            ldc "false"
         3: .line 84
            invokestatic freemarker.template.utility.SecurityUtilities.getSystemProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            putstatic freemarker.ext.beans.ClassIntrospector.DEVELOPMENT_MODE:Z
         4: .line 91
            ldc "org.zeroturnaround.javarebel.ClassEventListener"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         5: .line 92
            iconst_1
            istore 0 /* jRebelAvailable */
        start local 0 // boolean jRebelAvailable
         6: .line 93
            goto 13
        end local 0 // boolean jRebelAvailable
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         8: .line 94
            iconst_0
            istore 0 /* jRebelAvailable */
        start local 0 // boolean jRebelAvailable
         9: .line 96
            aload 1 /* e */
            instanceof java.lang.ClassNotFoundException
            ifne 13
        10: .line 97
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            ldc "Error initializing JRebel integration. JRebel integration disabled."
            aload 1 /* e */
            invokevirtual freemarker.log.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        11: .line 99
            goto 13
      StackMap locals: int java.lang.Throwable
      StackMap stack: java.lang.Throwable
        12: pop
        end local 1 // java.lang.Throwable e
        13: .line 105
      StackMap locals:
      StackMap stack:
            iload 0 /* jRebelAvailable */
            ifeq 23
        14: .line 108
            ldc "freemarker.ext.beans.JRebelClassChangeNotifier"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast freemarker.ext.beans.ClassChangeNotifier
        15: .line 107
            astore 1 /* classChangeNotifier */
        start local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
        16: .line 109
            goto 24
        end local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 2 /* e */
        start local 2 // java.lang.Throwable e
        18: .line 110
            aconst_null
            astore 1 /* classChangeNotifier */
        start local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
        19: .line 112
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            ldc "Error initializing JRebel integration. JRebel integration disabled."
            aload 2 /* e */
            invokevirtual freemarker.log.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        20: .line 113
            goto 24
      StackMap locals: int freemarker.ext.beans.ClassChangeNotifier java.lang.Throwable
      StackMap stack: java.lang.Throwable
        21: pop
        end local 2 // java.lang.Throwable e
        22: .line 117
            goto 24
        end local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
        23: .line 118
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* classChangeNotifier */
        start local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
        24: .line 121
      StackMap locals: freemarker.ext.beans.ClassChangeNotifier
      StackMap stack:
            aload 1 /* classChangeNotifier */
            putstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
        end local 1 // freemarker.ext.beans.ClassChangeNotifier classChangeNotifier
        end local 0 // boolean jRebelAvailable
        25: .line 128
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
        26: .line 130
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
        27: .line 132
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
            return
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            6    7     0      jRebelAvailable  Z
            9   25     0      jRebelAvailable  Z
            8   13     1                    e  Ljava/lang/Throwable;
           16   17     1  classChangeNotifier  Lfreemarker/ext/beans/ClassChangeNotifier;
           19   23     1  classChangeNotifier  Lfreemarker/ext/beans/ClassChangeNotifier;
           24   25     1  classChangeNotifier  Lfreemarker/ext/beans/ClassChangeNotifier;
           18   22     2                    e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     6       7  Class java.lang.Throwable
           9    11      12  Class java.lang.Throwable
          14    16      17  Class java.lang.Throwable
          19    20      21  Class java.lang.Throwable

  void <init>(freemarker.ext.beans.ClassIntrospectorBuilder, java.lang.Object);
    descriptor: (Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.beans.ClassIntrospectorBuilder pa
        start local 2 // java.lang.Object sharedLock
         0: .line 177
            aload 0 /* this */
            aload 1 /* pa */
            aload 2 /* sharedLock */
            iconst_0
            iconst_0
            invokespecial freemarker.ext.beans.ClassIntrospector.<init>:(Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;ZZ)V
         1: .line 178
            return
        end local 2 // java.lang.Object sharedLock
        end local 1 // freemarker.ext.beans.ClassIntrospectorBuilder pa
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1          pa  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0    2     2  sharedLock  Ljava/lang/Object;
    MethodParameters:
            Name  Flags
      pa          
      sharedLock  

  void <init>(freemarker.ext.beans.ClassIntrospectorBuilder, java.lang.Object, boolean, boolean);
    descriptor: (Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;ZZ)V
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.beans.ClassIntrospectorBuilder builder
        start local 2 // java.lang.Object sharedLock
        start local 3 // boolean hasSharedInstanceRestrictons
        start local 4 // boolean shared
         0: .line 185
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 156
            aload 0 /* this */
         2: .line 157
            new java.util.concurrent.ConcurrentHashMap
            dup
            iconst_0
            ldc 0.75
            bipush 16
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(IFI)V
            putfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
         3: .line 158
            aload 0 /* this */
            new java.util.HashSet
            dup
            iconst_0
            invokespecial java.util.HashSet.<init>:(I)V
            putfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
         4: .line 159
            aload 0 /* this */
            new java.util.HashSet
            dup
            iconst_0
            invokespecial java.util.HashSet.<init>:(I)V
            putfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
         5: .line 161
            aload 0 /* this */
         6: .line 162
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
         7: .line 163
            aload 0 /* this */
            new java.lang.ref.ReferenceQueue
            dup
            invokespecial java.lang.ref.ReferenceQueue.<init>:()V
            putfield freemarker.ext.beans.ClassIntrospector.modelFactoriesRefQueue:Ljava/lang/ref/ReferenceQueue;
         8: .line 187
            ldc "sharedLock"
            aload 2 /* sharedLock */
            invokestatic freemarker.template.utility.NullArgumentException.check:(Ljava/lang/String;Ljava/lang/Object;)V
         9: .line 189
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getExposureLevel:()I
            putfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
        10: .line 190
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getExposeFields:()Z
            putfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
        11: .line 191
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getMethodAppearanceFineTuner:()Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            putfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
        12: .line 192
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getMethodSorter:()Lfreemarker/ext/beans/MethodSorter;
            putfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
        13: .line 193
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getTreatDefaultMethodsAsBeanMembers:()Z
            putfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
        14: .line 194
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.isBugfixed:()Z
            putfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
        15: .line 196
            aload 0 /* this */
            aload 2 /* sharedLock */
            putfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
        16: .line 198
            aload 0 /* this */
            iload 3 /* hasSharedInstanceRestrictons */
            putfield freemarker.ext.beans.ClassIntrospector.hasSharedInstanceRestrictons:Z
        17: .line 199
            aload 0 /* this */
            iload 4 /* shared */
            putfield freemarker.ext.beans.ClassIntrospector.shared:Z
        18: .line 201
            getstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
            ifnull 20
        19: .line 202
            getstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
            aload 0 /* this */
            invokeinterface freemarker.ext.beans.ClassChangeNotifier.subscribe:(Lfreemarker/ext/beans/ClassIntrospector;)V
        20: .line 204
      StackMap locals: freemarker.ext.beans.ClassIntrospector freemarker.ext.beans.ClassIntrospectorBuilder java.lang.Object int int
      StackMap stack:
            return
        end local 4 // boolean shared
        end local 3 // boolean hasSharedInstanceRestrictons
        end local 2 // java.lang.Object sharedLock
        end local 1 // freemarker.ext.beans.ClassIntrospectorBuilder builder
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   21     0                          this  Lfreemarker/ext/beans/ClassIntrospector;
            0   21     1                       builder  Lfreemarker/ext/beans/ClassIntrospectorBuilder;
            0   21     2                    sharedLock  Ljava/lang/Object;
            0   21     3  hasSharedInstanceRestrictons  Z
            0   21     4                        shared  Z
    MethodParameters:
                              Name  Flags
      builder                       
      sharedLock                    
      hasSharedInstanceRestrictons  
      shared                        

  freemarker.ext.beans.ClassIntrospectorBuilder createBuilder();
    descriptor: ()Lfreemarker/ext/beans/ClassIntrospectorBuilder;
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 211
            new freemarker.ext.beans.ClassIntrospectorBuilder
            dup
            aload 0 /* this */
            invokespecial freemarker.ext.beans.ClassIntrospectorBuilder.<init>:(Lfreemarker/ext/beans/ClassIntrospector;)V
            areturn
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospector;

  java.util.Map<java.lang.Object, java.lang.Object> get(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Map;
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Class clazz
         0: .line 226
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* introspData */
        start local 2 // java.util.Map introspData
         1: .line 227
            aload 2 /* introspData */
            ifnull 2
            aload 2 /* introspData */
            areturn
        end local 2 // java.util.Map introspData
         2: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 232
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 4 /* introspData */
        start local 4 // java.util.Map introspData
         4: .line 233
            aload 4 /* introspData */
            ifnull 6
            aload 4 /* introspData */
            aload 3
            monitorexit
         5: areturn
         6: .line 235
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class top java.lang.Object java.util.Map
      StackMap stack:
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 2 /* className */
        start local 2 // java.lang.String className
         7: .line 236
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
            aload 2 /* className */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 17
         8: .line 237
            aload 0 /* this */
            aload 2 /* className */
            invokevirtual freemarker.ext.beans.ClassIntrospector.onSameNameClassesDetected:(Ljava/lang/String;)V
         9: .line 240
            goto 17
        10: .line 244
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String java.lang.Object java.util.Map
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
        11: .line 245
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 4 /* introspData */
        12: .line 246
            goto 17
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        13: astore 5 /* e */
        start local 5 // java.lang.InterruptedException e
        14: .line 247
            new java.lang.RuntimeException
            dup
        15: .line 248
            new java.lang.StringBuilder
            dup
            ldc "Class inrospection data lookup aborded: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 247
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.InterruptedException e
        17: .line 240
      StackMap locals:
      StackMap stack:
            aload 4 /* introspData */
            ifnonnull 18
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
            aload 1 /* clazz */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 10
        18: .line 251
      StackMap locals:
      StackMap stack:
            aload 4 /* introspData */
            ifnull 20
            aload 4 /* introspData */
            aload 3
            monitorexit
        19: areturn
        20: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
            aload 1 /* clazz */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // java.util.Map introspData
        21: .line 231
            aload 3
            monitorexit
        22: goto 25
        end local 2 // java.lang.String className
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class top java.lang.Object
      StackMap stack: java.lang.Throwable
        23: aload 3
            monitorexit
        24: athrow
        start local 2 // java.lang.String className
        25: .line 257
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.createClassIntrospectionData:(Ljava/lang/Class;)Ljava/util/Map;
            astore 3 /* introspData */
        start local 3 // java.util.Map introspData
        26: .line 258
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        27: .line 259
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            aload 1 /* clazz */
            aload 3 /* introspData */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        28: .line 260
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
            aload 2 /* className */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        29: .line 258
            aload 4
            monitorexit
        30: goto 33
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String java.util.Map java.lang.Object
      StackMap stack: java.lang.Throwable
        31: aload 4
            monitorexit
        32: athrow
        33: .line 262
      StackMap locals:
      StackMap stack:
            aload 3 /* introspData */
            astore 6
        34: .line 264
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        35: .line 265
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
            aload 1 /* clazz */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        36: .line 266
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        37: .line 264
            aload 7
            monitorexit
        38: goto 41
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String java.util.Map top top java.util.Map java.lang.Object
      StackMap stack: java.lang.Throwable
        39: aload 7
            monitorexit
        40: athrow
        41: .line 262
      StackMap locals:
      StackMap stack:
            aload 6
            areturn
        end local 3 // java.util.Map introspData
        42: .line 263
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String
      StackMap stack: java.lang.Throwable
            astore 5
        43: .line 264
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        44: .line 265
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
            aload 1 /* clazz */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        45: .line 266
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        46: .line 264
            aload 7
            monitorexit
        47: goto 50
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String top top java.lang.Throwable top java.lang.Object
      StackMap stack: java.lang.Throwable
        48: aload 7
            monitorexit
        49: athrow
        50: .line 268
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String top top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 2 // java.lang.String className
        end local 1 // java.lang.Class clazz
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   51     0         this  Lfreemarker/ext/beans/ClassIntrospector;
            0   51     1        clazz  Ljava/lang/Class<*>;
            1    2     2  introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            7   23     2    className  Ljava/lang/String;
           25   51     2    className  Ljava/lang/String;
            4   21     4  introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
           14   17     5            e  Ljava/lang/InterruptedException;
           26   42     3  introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
      Exception table:
        from    to  target  type
          10    12      13  Class java.lang.InterruptedException
           3     5      23  any
           6    19      23  any
          20    22      23  any
          23    24      23  any
          27    30      31  any
          31    32      31  any
          35    38      39  any
          39    40      39  any
          25    34      42  any
          44    47      48  any
          48    49      48  any
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
    MethodParameters:
       Name  Flags
      clazz  

  private java.util.Map<java.lang.Object, java.lang.Object> createClassIntrospectionData(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Class clazz
         0: .line 275
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* introspData */
        start local 2 // java.util.Map introspData
         1: .line 277
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
            ifeq 3
         2: .line 278
            aload 0 /* this */
            aload 2 /* introspData */
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.addFieldsToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;)V
         3: .line 281
      StackMap locals: java.util.Map
      StackMap stack:
            aload 1 /* clazz */
            invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;)Ljava/util/Map;
            astore 3 /* accessibleMethods */
        start local 3 // java.util.Map accessibleMethods
         4: .line 283
            aload 0 /* this */
            aload 2 /* introspData */
            aload 3 /* accessibleMethods */
            invokevirtual freemarker.ext.beans.ClassIntrospector.addGenericGetToClassIntrospectionData:(Ljava/util/Map;Ljava/util/Map;)V
         5: .line 285
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
            iconst_3
            if_icmpeq 11
         6: .line 287
            aload 0 /* this */
            aload 2 /* introspData */
            aload 1 /* clazz */
            aload 3 /* accessibleMethods */
            invokevirtual freemarker.ext.beans.ClassIntrospector.addBeanInfoToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;Ljava/util/Map;)V
         7: .line 288
            goto 11
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.util.Map java.util.Map
      StackMap stack: java.beans.IntrospectionException
         8: astore 4 /* e */
        start local 4 // java.beans.IntrospectionException e
         9: .line 289
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Couldn't properly perform introspection for class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        10: .line 290
            aload 2 /* introspData */
            invokeinterface java.util.Map.clear:()V
        end local 4 // java.beans.IntrospectionException e
        11: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* introspData */
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.addConstructorsToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;)V
        12: .line 296
            aload 2 /* introspData */
            invokeinterface java.util.Map.size:()I
            iconst_1
            if_icmple 14
        13: .line 297
            aload 2 /* introspData */
            areturn
        14: .line 298
      StackMap locals:
      StackMap stack:
            aload 2 /* introspData */
            invokeinterface java.util.Map.size:()I
            ifne 16
        15: .line 299
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            areturn
        16: .line 301
      StackMap locals:
      StackMap stack:
            aload 2 /* introspData */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* e */
        start local 4 // java.util.Map$Entry e
        17: .line 302
            aload 4 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            aload 4 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokestatic java.util.Collections.singletonMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
            areturn
        end local 4 // java.util.Map$Entry e
        end local 3 // java.util.Map accessibleMethods
        end local 2 // java.util.Map introspData
        end local 1 // java.lang.Class clazz
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   18     0               this  Lfreemarker/ext/beans/ClassIntrospector;
            0   18     1              clazz  Ljava/lang/Class<*>;
            1   18     2        introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            4   18     3  accessibleMethods  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            9   11     4                  e  Ljava/beans/IntrospectionException;
           17   18     4                  e  Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
      Exception table:
        from    to  target  type
           6     7       8  Class java.beans.IntrospectionException
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
    MethodParameters:
       Name  Flags
      clazz  

  private void addFieldsToClassIntrospectionData(java.util.Map<java.lang.Object, java.lang.Object>, java.lang.Class<?>);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.Map introspData
        start local 2 // java.lang.Class clazz
         0: .line 308
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getFields:()[Ljava/lang/reflect/Field;
            astore 3 /* fields */
        start local 3 // java.lang.reflect.Field[] fields
         1: .line 309
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 7
         3: .line 310
      StackMap locals: java.lang.reflect.Field[] int
      StackMap stack:
            aload 3 /* fields */
            iload 4 /* i */
            aaload
            astore 5 /* field */
        start local 5 // java.lang.reflect.Field field
         4: .line 311
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            bipush 8
            iand
            ifne 6
         5: .line 312
            aload 1 /* introspData */
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            aload 5 /* field */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // java.lang.reflect.Field field
         6: .line 309
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 3 /* fields */
            arraylength
            if_icmplt 3
        end local 4 // int i
         8: .line 315
            return
        end local 3 // java.lang.reflect.Field[] fields
        end local 2 // java.lang.Class clazz
        end local 1 // java.util.Map introspData
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lfreemarker/ext/beans/ClassIntrospector;
            0    9     1  introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0    9     2        clazz  Ljava/lang/Class<*>;
            1    9     3       fields  [Ljava/lang/reflect/Field;
            2    8     4            i  I
            4    6     5        field  Ljava/lang/reflect/Field;
    Exceptions:
      throws java.lang.SecurityException
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/lang/Class<*>;)V
    MethodParameters:
             Name  Flags
      introspData  
      clazz        

  private void addBeanInfoToClassIntrospectionData(java.util.Map<java.lang.Object, java.lang.Object>, java.lang.Class<?>, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=18, args_size=4
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.Map introspData
        start local 2 // java.lang.Class clazz
        start local 3 // java.util.Map accessibleMethods
         0: .line 320
            aload 2 /* clazz */
            invokestatic java.beans.Introspector.getBeanInfo:(Ljava/lang/Class;)Ljava/beans/BeanInfo;
            astore 4 /* beanInfo */
        start local 4 // java.beans.BeanInfo beanInfo
         1: .line 321
            aload 0 /* this */
            aload 4 /* beanInfo */
            aload 2 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.getPropertyDescriptors:(Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
            astore 5 /* pdas */
        start local 5 // java.util.List pdas
         2: .line 322
            aload 5 /* pdas */
            invokeinterface java.util.List.size:()I
            istore 6 /* pdasLength */
        start local 6 // int pdasLength
         3: .line 324
            iload 6 /* pdasLength */
            iconst_1
            isub
            istore 7 /* i */
        start local 7 // int i
         4: goto 10
         5: .line 325
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class java.util.Map java.beans.BeanInfo java.util.List int int
      StackMap stack:
            aload 0 /* this */
         6: .line 326
            aload 1 /* introspData */
            aload 5 /* pdas */
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.beans.PropertyDescriptor
            aload 2 /* clazz */
         7: .line 327
            aload 3 /* accessibleMethods */
         8: .line 325
            invokevirtual freemarker.ext.beans.ClassIntrospector.addPropertyDescriptorToClassIntrospectionData:(Ljava/util/Map;Ljava/beans/PropertyDescriptor;Ljava/lang/Class;Ljava/util/Map;)V
         9: .line 324
            iinc 7 /* i */ -1
      StackMap locals:
      StackMap stack:
        10: iload 7 /* i */
            ifge 5
        end local 7 // int i
        11: .line 330
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
            iconst_2
            if_icmpge 63
        12: .line 331
            new freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision
            dup
            invokespecial freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.<init>:()V
            astore 7 /* decision */
        start local 7 // freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision decision
        13: .line 332
            aconst_null
            astore 8 /* decisionInput */
        start local 8 // freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput decisionInput
        14: .line 333
            aload 0 /* this */
            aload 4 /* beanInfo */
            aload 2 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.getMethodDescriptors:(Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
            astore 9 /* mds */
        start local 9 // java.util.List mds
        15: .line 334
            aload 0 /* this */
            aload 9 /* mds */
            invokevirtual freemarker.ext.beans.ClassIntrospector.sortMethodDescriptors:(Ljava/util/List;)V
        16: .line 335
            aload 9 /* mds */
            invokeinterface java.util.List.size:()I
            istore 10 /* mdsSize */
        start local 10 // int mdsSize
        17: .line 336
            aconst_null
            astore 11 /* argTypesUsedByIndexerPropReaders */
        start local 11 // java.util.IdentityHashMap argTypesUsedByIndexerPropReaders
        18: .line 337
            iload 10 /* mdsSize */
            iconst_1
            isub
            istore 12 /* i */
        start local 12 // int i
        19: goto 62
        20: .line 338
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class java.util.Map java.beans.BeanInfo java.util.List int freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput java.util.List int java.util.IdentityHashMap int
      StackMap stack:
            aload 9 /* mds */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.beans.MethodDescriptor
            invokevirtual java.beans.MethodDescriptor.getMethod:()Ljava/lang/reflect/Method;
            aload 3 /* accessibleMethods */
            invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
            astore 13 /* method */
        start local 13 // java.lang.reflect.Method method
        21: .line 339
            aload 13 /* method */
            ifnull 61
            aload 0 /* this */
            aload 13 /* method */
            invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
            ifeq 61
        22: .line 340
            aload 7 /* decision */
            aload 13 /* method */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.setDefaults:(Ljava/lang/reflect/Method;)V
        23: .line 341
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            ifnull 29
        24: .line 342
            aload 8 /* decisionInput */
            ifnonnull 26
        25: .line 343
            new freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput
            dup
            invokespecial freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.<init>:()V
            astore 8 /* decisionInput */
        26: .line 345
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 8 /* decisionInput */
            aload 2 /* clazz */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.setContainingClass:(Ljava/lang/Class;)V
        27: .line 346
            aload 8 /* decisionInput */
            aload 13 /* method */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.setMethod:(Ljava/lang/reflect/Method;)V
        28: .line 348
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
            aload 8 /* decisionInput */
            aload 7 /* decision */
            invokeinterface freemarker.ext.beans.MethodAppearanceFineTuner.process:(Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecisionInput;Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecision;)V
        29: .line 351
      StackMap locals:
      StackMap stack:
            aload 7 /* decision */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getExposeAsProperty:()Ljava/beans/PropertyDescriptor;
            astore 14 /* propDesc */
        start local 14 // java.beans.PropertyDescriptor propDesc
        30: .line 352
            aload 14 /* propDesc */
            ifnull 36
        31: .line 353
            aload 7 /* decision */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getReplaceExistingProperty:()Z
            ifne 33
        32: .line 354
            aload 1 /* introspData */
            aload 14 /* propDesc */
            invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            instanceof freemarker.ext.beans.FastPropertyDescriptor
            ifne 36
        33: .line 355
      StackMap locals: java.beans.PropertyDescriptor
      StackMap stack:
            aload 0 /* this */
        34: .line 356
            aload 1 /* introspData */
            aload 14 /* propDesc */
            aload 2 /* clazz */
            aload 3 /* accessibleMethods */
        35: .line 355
            invokevirtual freemarker.ext.beans.ClassIntrospector.addPropertyDescriptorToClassIntrospectionData:(Ljava/util/Map;Ljava/beans/PropertyDescriptor;Ljava/lang/Class;Ljava/util/Map;)V
        36: .line 359
      StackMap locals:
      StackMap stack:
            aload 7 /* decision */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getExposeMethodAs:()Ljava/lang/String;
            astore 15 /* methodKey */
        start local 15 // java.lang.String methodKey
        37: .line 360
            aload 15 /* methodKey */
            ifnull 61
        38: .line 361
            aload 1 /* introspData */
            aload 15 /* methodKey */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 16 /* previous */
        start local 16 // java.lang.Object previous
        39: .line 362
            aload 16 /* previous */
            instanceof java.lang.reflect.Method
            ifeq 48
        40: .line 364
            new freemarker.ext.beans.OverloadedMethods
            dup
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
            invokespecial freemarker.ext.beans.OverloadedMethods.<init>:(Z)V
            astore 17 /* overloadedMethods */
        start local 17 // freemarker.ext.beans.OverloadedMethods overloadedMethods
        41: .line 365
            aload 17 /* overloadedMethods */
            aload 16 /* previous */
            checkcast java.lang.reflect.Method
            invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
        42: .line 366
            aload 17 /* overloadedMethods */
            aload 13 /* method */
            invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
        43: .line 367
            aload 1 /* introspData */
            aload 15 /* methodKey */
            aload 17 /* overloadedMethods */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        44: .line 369
            aload 11 /* argTypesUsedByIndexerPropReaders */
            ifnull 46
        45: .line 370
            aload 11 /* argTypesUsedByIndexerPropReaders */
            aload 16 /* previous */
            invokevirtual java.util.IdentityHashMap.containsKey:(Ljava/lang/Object;)Z
            ifne 61
        46: .line 371
      StackMap locals: java.lang.String java.lang.Object freemarker.ext.beans.OverloadedMethods
      StackMap stack:
            aload 1 /* introspData */
            invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
            aload 16 /* previous */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 17 // freemarker.ext.beans.OverloadedMethods overloadedMethods
        47: .line 373
            goto 61
      StackMap locals:
      StackMap stack:
        48: aload 16 /* previous */
            instanceof freemarker.ext.beans.OverloadedMethods
            ifeq 51
        49: .line 375
            aload 16 /* previous */
            checkcast freemarker.ext.beans.OverloadedMethods
            aload 13 /* method */
            invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
        50: .line 376
            goto 61
      StackMap locals:
      StackMap stack:
        51: aload 7 /* decision */
            invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getMethodShadowsProperty:()Z
            ifne 53
        52: .line 377
            aload 16 /* previous */
            instanceof freemarker.ext.beans.FastPropertyDescriptor
            ifne 61
        53: .line 379
      StackMap locals:
      StackMap stack:
            aload 1 /* introspData */
            aload 15 /* methodKey */
            aload 13 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        54: .line 380
            aload 1 /* introspData */
            invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
            aload 13 /* method */
        55: .line 381
            aload 13 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
        56: .line 380
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 17 /* replaced */
        start local 17 // java.lang.Class[] replaced
        57: .line 382
            aload 17 /* replaced */
            ifnull 61
        58: .line 383
            aload 11 /* argTypesUsedByIndexerPropReaders */
            ifnonnull 60
        59: .line 384
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            astore 11 /* argTypesUsedByIndexerPropReaders */
        60: .line 386
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 11 /* argTypesUsedByIndexerPropReaders */
            aload 13 /* method */
            aconst_null
            invokevirtual java.util.IdentityHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 17 // java.lang.Class[] replaced
        end local 16 // java.lang.Object previous
        end local 15 // java.lang.String methodKey
        end local 14 // java.beans.PropertyDescriptor propDesc
        end local 13 // java.lang.reflect.Method method
        61: .line 337
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class java.util.Map java.beans.BeanInfo java.util.List int freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput java.util.List int java.util.IdentityHashMap int
      StackMap stack:
            iinc 12 /* i */ -1
      StackMap locals:
      StackMap stack:
        62: iload 12 /* i */
            ifge 20
        end local 12 // int i
        end local 11 // java.util.IdentityHashMap argTypesUsedByIndexerPropReaders
        end local 10 // int mdsSize
        end local 9 // java.util.List mds
        end local 8 // freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput decisionInput
        end local 7 // freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision decision
        63: .line 393
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class java.util.Map java.beans.BeanInfo java.util.List int
      StackMap stack:
            return
        end local 6 // int pdasLength
        end local 5 // java.util.List pdas
        end local 4 // java.beans.BeanInfo beanInfo
        end local 3 // java.util.Map accessibleMethods
        end local 2 // java.lang.Class clazz
        end local 1 // java.util.Map introspData
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot                              Name  Signature
            0   64     0                              this  Lfreemarker/ext/beans/ClassIntrospector;
            0   64     1                       introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0   64     2                             clazz  Ljava/lang/Class<*>;
            0   64     3                 accessibleMethods  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            1   64     4                          beanInfo  Ljava/beans/BeanInfo;
            2   64     5                              pdas  Ljava/util/List<Ljava/beans/PropertyDescriptor;>;
            3   64     6                        pdasLength  I
            4   11     7                                 i  I
           13   63     7                          decision  Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecision;
           14   63     8                     decisionInput  Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecisionInput;
           15   63     9                               mds  Ljava/util/List<Ljava/beans/MethodDescriptor;>;
           17   63    10                           mdsSize  I
           18   63    11  argTypesUsedByIndexerPropReaders  Ljava/util/IdentityHashMap<Ljava/lang/reflect/Method;Ljava/lang/Void;>;
           19   63    12                                 i  I
           21   61    13                            method  Ljava/lang/reflect/Method;
           30   61    14                          propDesc  Ljava/beans/PropertyDescriptor;
           37   61    15                         methodKey  Ljava/lang/String;
           39   61    16                          previous  Ljava/lang/Object;
           41   47    17                 overloadedMethods  Lfreemarker/ext/beans/OverloadedMethods;
           57   61    17                          replaced  [Ljava/lang/Class;
    Exceptions:
      throws java.beans.IntrospectionException
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/lang/Class<*>;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)V
    MethodParameters:
                   Name  Flags
      introspData        
      clazz              
      accessibleMethods  

  private java.util.List<java.beans.PropertyDescriptor> getPropertyDescriptors(java.beans.BeanInfo, java.lang.Class<?>);
    descriptor: (Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=14, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.beans.BeanInfo beanInfo
        start local 2 // java.lang.Class clazz
         0: .line 399
            aload 1 /* beanInfo */
            invokeinterface java.beans.BeanInfo.getPropertyDescriptors:()[Ljava/beans/PropertyDescriptor;
            astore 3 /* introspectorPDsArray */
        start local 3 // java.beans.PropertyDescriptor[] introspectorPDsArray
         1: .line 400
            aload 3 /* introspectorPDsArray */
            ifnull 2
            aload 3 /* introspectorPDsArray */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            goto 3
         2: .line 401
      StackMap locals: java.beans.PropertyDescriptor[]
      StackMap stack:
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
         3: .line 400
      StackMap locals:
      StackMap stack: java.util.List
            astore 4 /* introspectorPDs */
        start local 4 // java.util.List introspectorPDs
         4: .line 403
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
            ifeq 5
            getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
            ifnonnull 6
         5: .line 405
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* introspectorPDs */
            areturn
         6: .line 418
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* mergedPRMPs */
        start local 5 // java.util.LinkedHashMap mergedPRMPs
         7: .line 423
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 26
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap top int int java.lang.reflect.Method[]
      StackMap stack:
         8: aload 9
            iload 7
            aaload
            astore 6 /* method */
        start local 6 // java.lang.reflect.Method method
         9: .line 424
            getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
            aload 6 /* method */
            invokeinterface freemarker.core._Java8.isDefaultMethod:(Ljava/lang/reflect/Method;)Z
            ifeq 25
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 25
        10: .line 425
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.isBridge:()Z
            ifne 25
        11: .line 426
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 10 /* paramTypes */
        start local 10 // java.lang.Class[] paramTypes
        12: .line 427
            aload 10 /* paramTypes */
            arraylength
            ifeq 14
        13: .line 428
            aload 10 /* paramTypes */
            arraylength
            iconst_1
            if_icmpne 25
            aload 10 /* paramTypes */
            iconst_0
            aaload
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 25
        14: .line 430
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap java.lang.reflect.Method int int java.lang.reflect.Method[] java.lang.Class[]
      StackMap stack:
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
        15: .line 429
            invokestatic freemarker.ext.beans._MethodUtil.getBeanPropertyNameFromReaderMethodName:(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/String;
            astore 11 /* propName */
        start local 11 // java.lang.String propName
        16: .line 431
            aload 11 /* propName */
            ifnull 25
        17: .line 432
            aload 5 /* mergedPRMPs */
            ifnonnull 19
        18: .line 434
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 5 /* mergedPRMPs */
        19: .line 436
      StackMap locals: java.lang.String
      StackMap stack:
            aload 10 /* paramTypes */
            arraylength
            ifne 22
        20: .line 437
            aload 0 /* this */
            aload 5 /* mergedPRMPs */
            aload 11 /* propName */
            aload 6 /* method */
            invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyReaderMethod:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/reflect/Method;)V
        21: .line 438
            goto 25
        22: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* mergedPRMPs */
            aload 11 /* propName */
        23: .line 440
            new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
            dup
            aconst_null
            aload 6 /* method */
            invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
        24: .line 439
            invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyReaderMethodPair:(Ljava/util/LinkedHashMap;Ljava/lang/String;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
        end local 11 // java.lang.String propName
        end local 10 // java.lang.Class[] paramTypes
        end local 6 // java.lang.reflect.Method method
        25: .line 423
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        26: iload 7
            iload 8
            if_icmplt 8
        27: .line 447
            aload 5 /* mergedPRMPs */
            ifnonnull 29
        28: .line 449
            aload 4 /* introspectorPDs */
            areturn
        29: .line 452
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap
      StackMap stack:
            aload 4 /* introspectorPDs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 32
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap top java.util.Iterator
      StackMap stack:
        30: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.beans.PropertyDescriptor
            astore 6 /* introspectorPD */
        start local 6 // java.beans.PropertyDescriptor introspectorPD
        31: .line 453
            aload 0 /* this */
            aload 5 /* mergedPRMPs */
            aload 6 /* introspectorPD */
            invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyDescriptor:(Ljava/util/LinkedHashMap;Ljava/beans/PropertyDescriptor;)V
        end local 6 // java.beans.PropertyDescriptor introspectorPD
        32: .line 452
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 30
        33: .line 457
            new java.util.ArrayList
            dup
            aload 5 /* mergedPRMPs */
            invokevirtual java.util.LinkedHashMap.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 6 /* mergedPDs */
        start local 6 // java.util.List mergedPDs
        34: .line 458
            aload 5 /* mergedPRMPs */
            invokevirtual java.util.LinkedHashMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 68
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap java.util.List top java.util.Iterator
      StackMap stack:
        35: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* entry */
        start local 7 // java.util.Map$Entry entry
        36: .line 459
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* propName */
        start local 9 // java.lang.String propName
        37: .line 460
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            astore 10 /* propDescObj */
        start local 10 // java.lang.Object propDescObj
        38: .line 461
            aload 10 /* propDescObj */
            instanceof java.beans.PropertyDescriptor
            ifeq 41
        39: .line 462
            aload 6 /* mergedPDs */
            aload 10 /* propDescObj */
            checkcast java.beans.PropertyDescriptor
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        40: .line 463
            goto 68
        41: .line 466
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap java.util.List java.util.Map$Entry java.util.Iterator java.lang.String java.lang.Object
      StackMap stack:
            aload 10 /* propDescObj */
            instanceof java.lang.reflect.Method
            ifeq 45
        42: .line 467
            aload 10 /* propDescObj */
            checkcast java.lang.reflect.Method
            astore 11 /* readMethod */
        start local 11 // java.lang.reflect.Method readMethod
        43: .line 468
            aconst_null
            astore 12 /* indexedReadMethod */
        start local 12 // java.lang.reflect.Method indexedReadMethod
        44: .line 469
            goto 54
        end local 12 // java.lang.reflect.Method indexedReadMethod
        end local 11 // java.lang.reflect.Method readMethod
      StackMap locals:
      StackMap stack:
        45: aload 10 /* propDescObj */
            instanceof freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
            ifeq 53
        46: .line 470
            aload 10 /* propDescObj */
            checkcast freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
            astore 13 /* prmp */
        start local 13 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair prmp
        47: .line 471
            aload 13 /* prmp */
            getfield freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.readMethod:Ljava/lang/reflect/Method;
            astore 11 /* readMethod */
        start local 11 // java.lang.reflect.Method readMethod
        48: .line 472
            aload 13 /* prmp */
            getfield freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.indexedReadMethod:Ljava/lang/reflect/Method;
            astore 12 /* indexedReadMethod */
        start local 12 // java.lang.reflect.Method indexedReadMethod
        49: .line 473
            aload 11 /* readMethod */
            ifnull 54
            aload 12 /* indexedReadMethod */
            ifnull 54
        50: .line 474
            aload 12 /* indexedReadMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            aload 11 /* readMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            if_acmpeq 54
        51: .line 477
            aconst_null
            astore 12 /* indexedReadMethod */
        end local 13 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair prmp
        52: .line 479
            goto 54
        end local 12 // java.lang.reflect.Method indexedReadMethod
        end local 11 // java.lang.reflect.Method readMethod
        53: .line 480
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            invokespecial freemarker.core.BugException.<init>:()V
            athrow
        start local 11 // java.lang.reflect.Method readMethod
        start local 12 // java.lang.reflect.Method indexedReadMethod
        54: .line 483
      StackMap locals: java.lang.reflect.Method java.lang.reflect.Method
      StackMap stack:
            aload 6 /* mergedPDs */
        55: .line 484
            aload 12 /* indexedReadMethod */
            ifnull 60
        56: .line 485
            new java.beans.IndexedPropertyDescriptor
            dup
            aload 9 /* propName */
        57: .line 486
            aload 11 /* readMethod */
            aconst_null
            aload 12 /* indexedReadMethod */
            aconst_null
        58: .line 485
            invokespecial java.beans.IndexedPropertyDescriptor.<init>:(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
        59: .line 486
            goto 61
        60: .line 487
      StackMap locals:
      StackMap stack: java.util.List
            new java.beans.PropertyDescriptor
            dup
            aload 9 /* propName */
            aload 11 /* readMethod */
            aconst_null
            invokespecial java.beans.PropertyDescriptor.<init>:(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
        61: .line 483
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap java.util.List java.util.Map$Entry java.util.Iterator java.lang.String java.lang.Object java.lang.reflect.Method java.lang.reflect.Method
      StackMap stack: java.util.List java.beans.PropertyDescriptor
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        62: .line 488
            goto 68
      StackMap locals:
      StackMap stack: java.beans.IntrospectionException
        63: astore 13 /* e */
        start local 13 // java.beans.IntrospectionException e
        64: .line 489
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            invokevirtual freemarker.log.Logger.isWarnEnabled:()Z
            ifeq 68
        65: .line 490
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Failed creating property descriptor for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " property "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* propName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        66: .line 491
            aload 13 /* e */
        67: .line 490
            invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 13 // java.beans.IntrospectionException e
        end local 12 // java.lang.reflect.Method indexedReadMethod
        end local 11 // java.lang.reflect.Method readMethod
        end local 10 // java.lang.Object propDescObj
        end local 9 // java.lang.String propName
        end local 7 // java.util.Map$Entry entry
        68: .line 458
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.PropertyDescriptor[] java.util.List java.util.LinkedHashMap java.util.List top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 35
        69: .line 496
            aload 6 /* mergedPDs */
            areturn
        end local 6 // java.util.List mergedPDs
        end local 5 // java.util.LinkedHashMap mergedPRMPs
        end local 4 // java.util.List introspectorPDs
        end local 3 // java.beans.PropertyDescriptor[] introspectorPDsArray
        end local 2 // java.lang.Class clazz
        end local 1 // java.beans.BeanInfo beanInfo
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   70     0                  this  Lfreemarker/ext/beans/ClassIntrospector;
            0   70     1              beanInfo  Ljava/beans/BeanInfo;
            0   70     2                 clazz  Ljava/lang/Class<*>;
            1   70     3  introspectorPDsArray  [Ljava/beans/PropertyDescriptor;
            4   70     4       introspectorPDs  Ljava/util/List<Ljava/beans/PropertyDescriptor;>;
            7   70     5           mergedPRMPs  Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;
            9   25     6                method  Ljava/lang/reflect/Method;
           12   25    10            paramTypes  [Ljava/lang/Class;
           16   25    11              propName  Ljava/lang/String;
           31   32     6        introspectorPD  Ljava/beans/PropertyDescriptor;
           34   70     6             mergedPDs  Ljava/util/List<Ljava/beans/PropertyDescriptor;>;
           36   68     7                 entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Object;>;
           37   68     9              propName  Ljava/lang/String;
           38   68    10           propDescObj  Ljava/lang/Object;
           43   45    11            readMethod  Ljava/lang/reflect/Method;
           48   53    11            readMethod  Ljava/lang/reflect/Method;
           54   68    11            readMethod  Ljava/lang/reflect/Method;
           44   45    12     indexedReadMethod  Ljava/lang/reflect/Method;
           49   53    12     indexedReadMethod  Ljava/lang/reflect/Method;
           54   68    12     indexedReadMethod  Ljava/lang/reflect/Method;
           47   52    13                  prmp  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
           64   68    13                     e  Ljava/beans/IntrospectionException;
      Exception table:
        from    to  target  type
          54    62      63  Class java.beans.IntrospectionException
    Signature: (Ljava/beans/BeanInfo;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/beans/PropertyDescriptor;>;
    MethodParameters:
          Name  Flags
      beanInfo  
      clazz     

  private void mergeInPropertyDescriptor(java.util.LinkedHashMap<java.lang.String, java.lang.Object>, java.beans.PropertyDescriptor);
    descriptor: (Ljava/util/LinkedHashMap;Ljava/beans/PropertyDescriptor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.LinkedHashMap mergedPRMPs
        start local 2 // java.beans.PropertyDescriptor pd
         0: .line 555
            aload 2 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
            astore 3 /* propName */
        start local 3 // java.lang.String propName
         1: .line 556
            aload 1 /* mergedPRMPs */
            aload 3 /* propName */
            aload 2 /* pd */
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* replaced */
        start local 4 // java.lang.Object replaced
         2: .line 557
            aload 4 /* replaced */
            ifnull 5
         3: .line 558
            new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
            dup
            aload 2 /* pd */
            invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/beans/PropertyDescriptor;)V
            astore 5 /* newPRMP */
        start local 5 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRMP
         4: .line 559
            aload 0 /* this */
            aload 1 /* mergedPRMPs */
            aload 3 /* propName */
            aload 4 /* replaced */
            aload 5 /* newPRMP */
            invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
        end local 5 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRMP
         5: .line 561
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
            return
        end local 4 // java.lang.Object replaced
        end local 3 // java.lang.String propName
        end local 2 // java.beans.PropertyDescriptor pd
        end local 1 // java.util.LinkedHashMap mergedPRMPs
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lfreemarker/ext/beans/ClassIntrospector;
            0    6     1  mergedPRMPs  Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;
            0    6     2           pd  Ljava/beans/PropertyDescriptor;
            1    6     3     propName  Ljava/lang/String;
            2    6     4     replaced  Ljava/lang/Object;
            4    5     5      newPRMP  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
    Signature: (Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;Ljava/beans/PropertyDescriptor;)V
    MethodParameters:
             Name  Flags
      mergedPRMPs  
      pd           

  private void mergeInPropertyReaderMethodPair(java.util.LinkedHashMap<java.lang.String, java.lang.Object>, java.lang.String, freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair);
    descriptor: (Ljava/util/LinkedHashMap;Ljava/lang/String;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.LinkedHashMap mergedPRMPs
        start local 2 // java.lang.String propName
        start local 3 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRM
         0: .line 565
            aload 1 /* mergedPRMPs */
            aload 2 /* propName */
            aload 3 /* newPRM */
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* replaced */
        start local 4 // java.lang.Object replaced
         1: .line 566
            aload 4 /* replaced */
            ifnull 3
         2: .line 567
            aload 0 /* this */
            aload 1 /* mergedPRMPs */
            aload 2 /* propName */
            aload 4 /* replaced */
            aload 3 /* newPRM */
            invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
         3: .line 569
      StackMap locals: java.lang.Object
      StackMap stack:
            return
        end local 4 // java.lang.Object replaced
        end local 3 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRM
        end local 2 // java.lang.String propName
        end local 1 // java.util.LinkedHashMap mergedPRMPs
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lfreemarker/ext/beans/ClassIntrospector;
            0    4     1  mergedPRMPs  Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;
            0    4     2     propName  Ljava/lang/String;
            0    4     3       newPRM  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
            1    4     4     replaced  Ljava/lang/Object;
    Signature: (Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;Ljava/lang/String;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
    MethodParameters:
             Name  Flags
      mergedPRMPs  
      propName     
      newPRM       

  private void mergeInPropertyReaderMethod(java.util.LinkedHashMap<java.lang.String, java.lang.Object>, java.lang.String, java.lang.reflect.Method);
    descriptor: (Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/reflect/Method;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=4
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.LinkedHashMap mergedPRMPs
        start local 2 // java.lang.String propName
        start local 3 // java.lang.reflect.Method readerMethod
         0: .line 573
            aload 1 /* mergedPRMPs */
            aload 2 /* propName */
            aload 3 /* readerMethod */
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* replaced */
        start local 4 // java.lang.Object replaced
         1: .line 574
            aload 4 /* replaced */
            ifnull 5
         2: .line 575
            aload 0 /* this */
            aload 1 /* mergedPRMPs */
            aload 2 /* propName */
         3: .line 576
            aload 4 /* replaced */
            new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
            dup
            aload 3 /* readerMethod */
            aconst_null
            invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
         4: .line 575
            invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
         5: .line 578
      StackMap locals: java.lang.Object
      StackMap stack:
            return
        end local 4 // java.lang.Object replaced
        end local 3 // java.lang.reflect.Method readerMethod
        end local 2 // java.lang.String propName
        end local 1 // java.util.LinkedHashMap mergedPRMPs
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lfreemarker/ext/beans/ClassIntrospector;
            0    6     1   mergedPRMPs  Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;
            0    6     2      propName  Ljava/lang/String;
            0    6     3  readerMethod  Ljava/lang/reflect/Method;
            1    6     4      replaced  Ljava/lang/Object;
    Signature: (Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;Ljava/lang/String;Ljava/lang/reflect/Method;)V
    MethodParameters:
              Name  Flags
      mergedPRMPs   
      propName      
      readerMethod  

  private void putIfMergedPropertyReaderMethodPairDiffers(java.util.LinkedHashMap<java.lang.String, java.lang.Object>, java.lang.String, , freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair);
    descriptor: (Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=5
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.LinkedHashMap mergedPRMPs
        start local 2 // java.lang.String propName
        start local 3 // java.lang.Object replaced
        start local 4 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRMP
         0: .line 582
            aload 3 /* replaced */
            invokestatic freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.from:(Ljava/lang/Object;)Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
            astore 5 /* replacedPRMP */
        start local 5 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair replacedPRMP
         1: .line 583
            aload 5 /* replacedPRMP */
            aload 4 /* newPRMP */
            invokestatic freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.merge:(Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
            astore 6 /* mergedPRMP */
        start local 6 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair mergedPRMP
         2: .line 584
            aload 6 /* mergedPRMP */
            aload 4 /* newPRMP */
            invokevirtual freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.equals:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 585
            aload 1 /* mergedPRMPs */
            aload 2 /* propName */
            aload 6 /* mergedPRMP */
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 587
      StackMap locals: freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
      StackMap stack:
            return
        end local 6 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair mergedPRMP
        end local 5 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair replacedPRMP
        end local 4 // freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair newPRMP
        end local 3 // java.lang.Object replaced
        end local 2 // java.lang.String propName
        end local 1 // java.util.LinkedHashMap mergedPRMPs
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lfreemarker/ext/beans/ClassIntrospector;
            0    5     1   mergedPRMPs  Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;
            0    5     2      propName  Ljava/lang/String;
            0    5     3      replaced  Ljava/lang/Object;
            0    5     4       newPRMP  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
            1    5     5  replacedPRMP  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
            2    5     6    mergedPRMP  Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
    Signature: (Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/lang/Object;>;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
    MethodParameters:
             Name  Flags
      mergedPRMPs  
      propName     
      replaced     
      newPRMP      

  private java.util.List<java.beans.MethodDescriptor> getMethodDescriptors(java.beans.BeanInfo, java.lang.Class<?>);
    descriptor: (Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.beans.BeanInfo beanInfo
        start local 2 // java.lang.Class clazz
         0: .line 593
            aload 1 /* beanInfo */
            invokeinterface java.beans.BeanInfo.getMethodDescriptors:()[Ljava/beans/MethodDescriptor;
            astore 3 /* introspectorMDArray */
        start local 3 // java.beans.MethodDescriptor[] introspectorMDArray
         1: .line 594
            aload 3 /* introspectorMDArray */
            ifnull 3
            aload 3 /* introspectorMDArray */
            arraylength
            ifeq 3
         2: .line 595
            aload 3 /* introspectorMDArray */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            goto 4
      StackMap locals: java.beans.MethodDescriptor[]
      StackMap stack:
         3: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
         4: .line 594
      StackMap locals:
      StackMap stack: java.util.List
            astore 4 /* introspectionMDs */
        start local 4 // java.util.List introspectionMDs
         5: .line 597
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
            ifeq 6
            getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
            ifnonnull 7
         6: .line 599
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* introspectionMDs */
            areturn
         7: .line 602
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* defaultMethodsToAddByName */
        start local 5 // java.util.Map defaultMethodsToAddByName
         8: .line 603
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 19
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map top int int java.lang.reflect.Method[]
      StackMap stack:
         9: aload 9
            iload 7
            aaload
            astore 6 /* method */
        start local 6 // java.lang.reflect.Method method
        10: .line 604
            getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
            aload 6 /* method */
            invokeinterface freemarker.core._Java8.isDefaultMethod:(Ljava/lang/reflect/Method;)Z
            ifeq 18
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.isBridge:()Z
            ifne 18
        11: .line 605
            aload 5 /* defaultMethodsToAddByName */
            ifnonnull 13
        12: .line 606
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 5 /* defaultMethodsToAddByName */
        13: .line 608
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map java.lang.reflect.Method int int java.lang.reflect.Method[]
      StackMap stack:
            aload 5 /* defaultMethodsToAddByName */
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 10 /* overloads */
        start local 10 // java.util.List overloads
        14: .line 609
            aload 10 /* overloads */
            ifnonnull 17
        15: .line 610
            new java.util.ArrayList
            dup
            iconst_0
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 10 /* overloads */
        16: .line 611
            aload 5 /* defaultMethodsToAddByName */
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 10 /* overloads */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 613
      StackMap locals: java.util.List
      StackMap stack:
            aload 10 /* overloads */
            aload 6 /* method */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.util.List overloads
        end local 6 // java.lang.reflect.Method method
        18: .line 603
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        19: iload 7
            iload 8
            if_icmplt 9
        20: .line 617
            aload 5 /* defaultMethodsToAddByName */
            ifnonnull 22
        21: .line 619
            aload 4 /* introspectionMDs */
            areturn
        22: .line 624
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 4 /* introspectionMDs */
            invokeinterface java.util.List.size:()I
            bipush 16
            iadd
            invokespecial java.util.ArrayList.<init>:(I)V
        23: .line 623
            astore 6 /* newIntrospectionMDs */
        start local 6 // java.util.ArrayList newIntrospectionMDs
        24: .line 625
            aload 4 /* introspectionMDs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 32
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map java.util.ArrayList top java.util.Iterator
      StackMap stack:
        25: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.beans.MethodDescriptor
            astore 7 /* introspectorMD */
        start local 7 // java.beans.MethodDescriptor introspectorMD
        26: .line 626
            aload 7 /* introspectorMD */
            invokevirtual java.beans.MethodDescriptor.getMethod:()Ljava/lang/reflect/Method;
            astore 9 /* introspectorM */
        start local 9 // java.lang.reflect.Method introspectorM
        27: .line 632
            aload 0 /* this */
        28: .line 633
            aload 5 /* defaultMethodsToAddByName */
            aload 9 /* introspectorM */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            aload 9 /* introspectorM */
        29: .line 632
            invokevirtual freemarker.ext.beans.ClassIntrospector.containsMethodWithSameParameterTypes:(Ljava/util/List;Ljava/lang/reflect/Method;)Z
        30: .line 633
            ifne 32
        31: .line 634
            aload 6 /* newIntrospectionMDs */
            aload 7 /* introspectorMD */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.reflect.Method introspectorM
        end local 7 // java.beans.MethodDescriptor introspectorMD
        32: .line 625
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        33: .line 637
            aload 6 /* newIntrospectionMDs */
            astore 4 /* introspectionMDs */
        34: .line 640
            aload 5 /* defaultMethodsToAddByName */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 40
      StackMap locals:
      StackMap stack:
        35: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* entry */
        start local 7 // java.util.Map$Entry entry
        36: .line 641
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 39
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map java.util.ArrayList java.util.Map$Entry java.util.Iterator top java.util.Iterator
      StackMap stack:
        37: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 9 /* method */
        start local 9 // java.lang.reflect.Method method
        38: .line 642
            aload 4 /* introspectionMDs */
            new java.beans.MethodDescriptor
            dup
            aload 9 /* method */
            invokespecial java.beans.MethodDescriptor.<init>:(Ljava/lang/reflect/Method;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.reflect.Method method
        39: .line 641
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 37
        end local 7 // java.util.Map$Entry entry
        40: .line 640
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.beans.BeanInfo java.lang.Class java.beans.MethodDescriptor[] java.util.List java.util.Map java.util.ArrayList top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 35
        41: .line 646
            aload 4 /* introspectionMDs */
            areturn
        end local 6 // java.util.ArrayList newIntrospectionMDs
        end local 5 // java.util.Map defaultMethodsToAddByName
        end local 4 // java.util.List introspectionMDs
        end local 3 // java.beans.MethodDescriptor[] introspectorMDArray
        end local 2 // java.lang.Class clazz
        end local 1 // java.beans.BeanInfo beanInfo
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   42     0                       this  Lfreemarker/ext/beans/ClassIntrospector;
            0   42     1                   beanInfo  Ljava/beans/BeanInfo;
            0   42     2                      clazz  Ljava/lang/Class<*>;
            1   42     3        introspectorMDArray  [Ljava/beans/MethodDescriptor;
            5   42     4           introspectionMDs  Ljava/util/List<Ljava/beans/MethodDescriptor;>;
            8   42     5  defaultMethodsToAddByName  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
           10   18     6                     method  Ljava/lang/reflect/Method;
           14   18    10                  overloads  Ljava/util/List<Ljava/lang/reflect/Method;>;
           24   42     6        newIntrospectionMDs  Ljava/util/ArrayList<Ljava/beans/MethodDescriptor;>;
           26   32     7             introspectorMD  Ljava/beans/MethodDescriptor;
           27   32     9              introspectorM  Ljava/lang/reflect/Method;
           36   40     7                      entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
           38   39     9                     method  Ljava/lang/reflect/Method;
    Signature: (Ljava/beans/BeanInfo;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/beans/MethodDescriptor;>;
    MethodParameters:
          Name  Flags
      beanInfo  
      clazz     

  private boolean containsMethodWithSameParameterTypes(java.util.List<java.lang.reflect.Method>, java.lang.reflect.Method);
    descriptor: (Ljava/util/List;Ljava/lang/reflect/Method;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.List overloads
        start local 2 // java.lang.reflect.Method m
         0: .line 650
            aload 1 /* overloads */
            ifnonnull 2
         1: .line 651
            iconst_0
            ireturn
         2: .line 654
      StackMap locals:
      StackMap stack:
            aload 2 /* m */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 3 /* paramTypes */
        start local 3 // java.lang.Class[] paramTypes
         3: .line 655
            aload 1 /* overloads */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.List java.lang.reflect.Method java.lang.Class[] top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 4 /* overload */
        start local 4 // java.lang.reflect.Method overload
         5: .line 656
            aload 4 /* overload */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            aload 3 /* paramTypes */
            invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 7
         6: .line 657
            iconst_1
            ireturn
        end local 4 // java.lang.reflect.Method overload
         7: .line 655
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 660
            iconst_0
            ireturn
        end local 3 // java.lang.Class[] paramTypes
        end local 2 // java.lang.reflect.Method m
        end local 1 // java.util.List overloads
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lfreemarker/ext/beans/ClassIntrospector;
            0    9     1   overloads  Ljava/util/List<Ljava/lang/reflect/Method;>;
            0    9     2           m  Ljava/lang/reflect/Method;
            3    9     3  paramTypes  [Ljava/lang/Class;
            5    7     4    overload  Ljava/lang/reflect/Method;
    Signature: (Ljava/util/List<Ljava/lang/reflect/Method;>;Ljava/lang/reflect/Method;)Z
    MethodParameters:
           Name  Flags
      overloads  
      m          

  private void addPropertyDescriptorToClassIntrospectionData(java.util.Map<java.lang.Object, java.lang.Object>, java.beans.PropertyDescriptor, java.lang.Class<?>, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Ljava/util/Map;Ljava/beans/PropertyDescriptor;Ljava/lang/Class;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.Map introspData
        start local 2 // java.beans.PropertyDescriptor pd
        start local 3 // java.lang.Class clazz
        start local 4 // java.util.Map accessibleMethods
         0: .line 665
            aload 2 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getReadMethod:()Ljava/lang/reflect/Method;
            aload 4 /* accessibleMethods */
            invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
            astore 5 /* readMethod */
        start local 5 // java.lang.reflect.Method readMethod
         1: .line 666
            aload 5 /* readMethod */
            ifnull 3
            aload 0 /* this */
            aload 5 /* readMethod */
            invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
            ifne 3
         2: .line 667
            aconst_null
            astore 5 /* readMethod */
         3: .line 671
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 2 /* pd */
            instanceof java.beans.IndexedPropertyDescriptor
            ifeq 13
         4: .line 673
            aload 2 /* pd */
            checkcast java.beans.IndexedPropertyDescriptor
            invokevirtual java.beans.IndexedPropertyDescriptor.getIndexedReadMethod:()Ljava/lang/reflect/Method;
            aload 4 /* accessibleMethods */
         5: .line 672
            invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
            astore 6 /* indexedReadMethod */
        start local 6 // java.lang.reflect.Method indexedReadMethod
         6: .line 674
            aload 6 /* indexedReadMethod */
            ifnull 8
            aload 0 /* this */
            aload 6 /* indexedReadMethod */
            invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
            ifne 8
         7: .line 675
            aconst_null
            astore 6 /* indexedReadMethod */
         8: .line 677
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 6 /* indexedReadMethod */
            ifnull 14
         9: .line 678
            aload 1 /* introspData */
            invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
        10: .line 679
            aload 6 /* indexedReadMethod */
            aload 6 /* indexedReadMethod */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
        11: .line 678
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 681
            goto 14
        end local 6 // java.lang.reflect.Method indexedReadMethod
        13: .line 682
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* indexedReadMethod */
        start local 6 // java.lang.reflect.Method indexedReadMethod
        14: .line 685
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 5 /* readMethod */
            ifnonnull 15
            aload 6 /* indexedReadMethod */
            ifnull 16
        15: .line 686
      StackMap locals:
      StackMap stack:
            aload 1 /* introspData */
            aload 2 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
            new freemarker.ext.beans.FastPropertyDescriptor
            dup
            aload 5 /* readMethod */
            aload 6 /* indexedReadMethod */
            invokespecial freemarker.ext.beans.FastPropertyDescriptor.<init>:(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 688
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.lang.reflect.Method indexedReadMethod
        end local 5 // java.lang.reflect.Method readMethod
        end local 4 // java.util.Map accessibleMethods
        end local 3 // java.lang.Class clazz
        end local 2 // java.beans.PropertyDescriptor pd
        end local 1 // java.util.Map introspData
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0               this  Lfreemarker/ext/beans/ClassIntrospector;
            0   17     1        introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0   17     2                 pd  Ljava/beans/PropertyDescriptor;
            0   17     3              clazz  Ljava/lang/Class<*>;
            0   17     4  accessibleMethods  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            1   17     5         readMethod  Ljava/lang/reflect/Method;
            6   13     6  indexedReadMethod  Ljava/lang/reflect/Method;
           14   17     6  indexedReadMethod  Ljava/lang/reflect/Method;
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/beans/PropertyDescriptor;Ljava/lang/Class<*>;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)V
    MethodParameters:
                   Name  Flags
      introspData        
      pd                 
      clazz              
      accessibleMethods  

  private void addGenericGetToClassIntrospectionData(java.util.Map<java.lang.Object, java.lang.Object>, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.Map introspData
        start local 2 // java.util.Map accessibleMethods
         0: .line 693
            getstatic freemarker.ext.beans.ClassIntrospector$MethodSignature.GET_STRING_SIGNATURE:Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
            aload 2 /* accessibleMethods */
         1: .line 692
            invokestatic freemarker.ext.beans.ClassIntrospector.getFirstAccessibleMethod:(Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map;)Ljava/lang/reflect/Method;
            astore 3 /* genericGet */
        start local 3 // java.lang.reflect.Method genericGet
         2: .line 694
            aload 3 /* genericGet */
            ifnonnull 5
         3: .line 696
            getstatic freemarker.ext.beans.ClassIntrospector$MethodSignature.GET_OBJECT_SIGNATURE:Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
            aload 2 /* accessibleMethods */
         4: .line 695
            invokestatic freemarker.ext.beans.ClassIntrospector.getFirstAccessibleMethod:(Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map;)Ljava/lang/reflect/Method;
            astore 3 /* genericGet */
         5: .line 698
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 3 /* genericGet */
            ifnull 7
         6: .line 699
            aload 1 /* introspData */
            getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
            aload 3 /* genericGet */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 701
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.reflect.Method genericGet
        end local 2 // java.util.Map accessibleMethods
        end local 1 // java.util.Map introspData
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lfreemarker/ext/beans/ClassIntrospector;
            0    8     1        introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0    8     2  accessibleMethods  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            2    8     3         genericGet  Ljava/lang/reflect/Method;
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)V
    MethodParameters:
                   Name  Flags
      introspData        
      accessibleMethods  

  private void addConstructorsToClassIntrospectionData(java.util.Map<java.lang.Object, java.lang.Object>, java.lang.Class<?>);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.Map introspData
        start local 2 // java.lang.Class clazz
         0: .line 706
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getConstructors:()[Ljava/lang/reflect/Constructor;
            astore 3 /* ctors */
        start local 3 // java.lang.reflect.Constructor[] ctors
         1: .line 707
            aload 3 /* ctors */
            arraylength
            iconst_1
            if_icmpne 5
         2: .line 708
            aload 3 /* ctors */
            iconst_0
            aaload
            astore 4 /* ctor */
        start local 4 // java.lang.reflect.Constructor ctor
         3: .line 709
            aload 1 /* introspData */
            getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
            new freemarker.ext.beans.SimpleMethod
            dup
            aload 4 /* ctor */
            aload 4 /* ctor */
            invokevirtual java.lang.reflect.Constructor.getParameterTypes:()[Ljava/lang/Class;
            invokespecial freemarker.ext.beans.SimpleMethod.<init>:(Ljava/lang/reflect/Member;[Ljava/lang/Class;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.lang.reflect.Constructor ctor
         4: .line 710
            goto 16
      StackMap locals: java.lang.reflect.Constructor[]
      StackMap stack:
         5: aload 3 /* ctors */
            arraylength
            iconst_1
            if_icmple 16
         6: .line 711
            new freemarker.ext.beans.OverloadedMethods
            dup
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
            invokespecial freemarker.ext.beans.OverloadedMethods.<init>:(Z)V
            astore 4 /* overloadedCtors */
        start local 4 // freemarker.ext.beans.OverloadedMethods overloadedCtors
         7: .line 712
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 11
         9: .line 713
      StackMap locals: freemarker.ext.beans.OverloadedMethods int
      StackMap stack:
            aload 4 /* overloadedCtors */
            aload 3 /* ctors */
            iload 5 /* i */
            aaload
            invokevirtual freemarker.ext.beans.OverloadedMethods.addConstructor:(Ljava/lang/reflect/Constructor;)V
        10: .line 712
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 3 /* ctors */
            arraylength
            if_icmplt 9
        end local 5 // int i
        12: .line 715
            aload 1 /* introspData */
            getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
            aload 4 /* overloadedCtors */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // freemarker.ext.beans.OverloadedMethods overloadedCtors
        end local 3 // java.lang.reflect.Constructor[] ctors
        13: .line 717
            goto 16
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class
      StackMap stack: java.lang.SecurityException
        14: astore 3 /* e */
        start local 3 // java.lang.SecurityException e
        15: .line 718
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Can't discover constructors for class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.lang.SecurityException e
        16: .line 720
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Class clazz
        end local 1 // java.util.Map introspData
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0             this  Lfreemarker/ext/beans/ClassIntrospector;
            0   17     1      introspData  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0   17     2            clazz  Ljava/lang/Class<*>;
            1   13     3            ctors  [Ljava/lang/reflect/Constructor;
            3    4     4             ctor  Ljava/lang/reflect/Constructor<*>;
            7   13     4  overloadedCtors  Lfreemarker/ext/beans/OverloadedMethods;
            8   12     5                i  I
           15   16     3                e  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           0    13      14  Class java.lang.SecurityException
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/lang/Class<*>;)V
    MethodParameters:
             Name  Flags
      introspData  final
      clazz        

  private static java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>> discoverAccessibleMethods(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 728
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* accessibles */
        start local 1 // java.util.Map accessibles
         1: .line 729
            aload 0 /* clazz */
            aload 1 /* accessibles */
            invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
         2: .line 730
            aload 1 /* accessibles */
            areturn
        end local 1 // java.util.Map accessibles
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0        clazz  Ljava/lang/Class<*>;
            1    3     1  accessibles  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
    MethodParameters:
       Name  Flags
      clazz  

  private static void discoverAccessibleMethods(java.lang.Class<?>, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Ljava/lang/Class;Ljava/util/Map;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // java.util.Map accessibles
         0: .line 734
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 19
         1: .line 736
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            astore 2 /* methods */
        start local 2 // java.lang.reflect.Method[] methods
         2: .line 737
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 12
         4: .line 738
      StackMap locals: java.lang.reflect.Method[] int
      StackMap stack:
            aload 2 /* methods */
            iload 3 /* i */
            aaload
            astore 4 /* method */
        start local 4 // java.lang.reflect.Method method
         5: .line 739
            new freemarker.ext.beans.ClassIntrospector$MethodSignature
            dup
            aload 4 /* method */
            invokespecial freemarker.ext.beans.ClassIntrospector$MethodSignature.<init>:(Ljava/lang/reflect/Method;)V
            astore 5 /* sig */
        start local 5 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
         6: .line 751
            aload 1 /* accessibles */
            aload 5 /* sig */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 6 /* methodList */
        start local 6 // java.util.List methodList
         7: .line 752
            aload 6 /* methodList */
            ifnonnull 10
         8: .line 754
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 6 /* methodList */
         9: .line 755
            aload 1 /* accessibles */
            aload 5 /* sig */
            aload 6 /* methodList */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 757
      StackMap locals: java.lang.reflect.Method freemarker.ext.beans.ClassIntrospector$MethodSignature java.util.List
      StackMap stack:
            aload 6 /* methodList */
            aload 4 /* method */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.util.List methodList
        end local 5 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
        end local 4 // java.lang.reflect.Method method
        11: .line 737
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* i */
            aload 2 /* methods */
            arraylength
            if_icmplt 4
        end local 3 // int i
        13: .line 759
            return
        end local 2 // java.lang.reflect.Method[] methods
        14: .line 760
      StackMap locals: java.lang.Class java.util.Map
      StackMap stack: java.lang.SecurityException
            astore 2 /* e */
        start local 2 // java.lang.SecurityException e
        15: .line 761
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Could not discover accessible methods of class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        16: .line 762
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 763
            ldc ", attemping superclasses/interfaces."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
        18: .line 761
            invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.SecurityException e
        19: .line 768
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            astore 2 /* interfaces */
        start local 2 // java.lang.Class[] interfaces
        20: .line 769
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        21: goto 24
        22: .line 770
      StackMap locals: java.lang.Class[] int
      StackMap stack:
            aload 2 /* interfaces */
            iload 3 /* i */
            aaload
            aload 1 /* accessibles */
            invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
        23: .line 769
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 3 /* i */
            aload 2 /* interfaces */
            arraylength
            if_icmplt 22
        end local 3 // int i
        25: .line 772
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 3 /* superclass */
        start local 3 // java.lang.Class superclass
        26: .line 773
            aload 3 /* superclass */
            ifnull 28
        27: .line 774
            aload 3 /* superclass */
            aload 1 /* accessibles */
            invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
        28: .line 776
      StackMap locals: java.lang.Class java.util.Map java.lang.Class[] java.lang.Class
      StackMap stack:
            return
        end local 3 // java.lang.Class superclass
        end local 2 // java.lang.Class[] interfaces
        end local 1 // java.util.Map accessibles
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   29     0        clazz  Ljava/lang/Class<*>;
            0   29     1  accessibles  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            2   14     2      methods  [Ljava/lang/reflect/Method;
            3   13     3            i  I
            5   11     4       method  Ljava/lang/reflect/Method;
            6   11     5          sig  Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
            7   11     6   methodList  Ljava/util/List<Ljava/lang/reflect/Method;>;
           15   19     2            e  Ljava/lang/SecurityException;
           20   29     2   interfaces  [Ljava/lang/Class;
           21   25     3            i  I
           26   29     3   superclass  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           1    13      14  Class java.lang.SecurityException
    Signature: (Ljava/lang/Class<*>;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)V
    MethodParameters:
             Name  Flags
      clazz        
      accessibles  

  private static java.lang.reflect.Method getMatchingAccessibleMethod(java.lang.reflect.Method, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.lang.reflect.Method m
        start local 1 // java.util.Map accessibles
         0: .line 779
            aload 0 /* m */
            ifnonnull 2
         1: .line 780
            aconst_null
            areturn
         2: .line 782
      StackMap locals:
      StackMap stack:
            new freemarker.ext.beans.ClassIntrospector$MethodSignature
            dup
            aload 0 /* m */
            invokespecial freemarker.ext.beans.ClassIntrospector$MethodSignature.<init>:(Ljava/lang/reflect/Method;)V
            astore 2 /* sig */
        start local 2 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
         3: .line 783
            aload 1 /* accessibles */
            aload 2 /* sig */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* ams */
        start local 3 // java.util.List ams
         4: .line 784
            aload 3 /* ams */
            ifnonnull 6
         5: .line 785
            aconst_null
            areturn
         6: .line 787
      StackMap locals: freemarker.ext.beans.ClassIntrospector$MethodSignature java.util.List
      StackMap stack:
            aload 3 /* ams */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 10
      StackMap locals: java.lang.reflect.Method java.util.Map freemarker.ext.beans.ClassIntrospector$MethodSignature java.util.List top java.util.Iterator
      StackMap stack:
         7: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 4 /* am */
        start local 4 // java.lang.reflect.Method am
         8: .line 788
            aload 4 /* am */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            if_acmpne 10
         9: .line 789
            aload 4 /* am */
            areturn
        end local 4 // java.lang.reflect.Method am
        10: .line 787
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        11: .line 792
            aconst_null
            areturn
        end local 3 // java.util.List ams
        end local 2 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
        end local 1 // java.util.Map accessibles
        end local 0 // java.lang.reflect.Method m
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0            m  Ljava/lang/reflect/Method;
            0   12     1  accessibles  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            3   12     2          sig  Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
            4   12     3          ams  Ljava/util/List<Ljava/lang/reflect/Method;>;
            8   10     4           am  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/reflect/Method;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)Ljava/lang/reflect/Method;
    MethodParameters:
             Name  Flags
      m            
      accessibles  

  private static java.lang.reflect.Method getFirstAccessibleMethod(freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.Map<freemarker.ext.beans.ClassIntrospector$MethodSignature, java.util.List<java.lang.reflect.Method>>);
    descriptor: (Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map;)Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
        start local 1 // java.util.Map accessibles
         0: .line 796
            aload 1 /* accessibles */
            aload 0 /* sig */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* ams */
        start local 2 // java.util.List ams
         1: .line 797
            aload 2 /* ams */
            ifnull 2
            aload 2 /* ams */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 3
         2: .line 798
      StackMap locals: java.util.List
      StackMap stack:
            aconst_null
            areturn
         3: .line 800
      StackMap locals:
      StackMap stack:
            aload 2 /* ams */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            areturn
        end local 2 // java.util.List ams
        end local 1 // java.util.Map accessibles
        end local 0 // freemarker.ext.beans.ClassIntrospector$MethodSignature sig
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0          sig  Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
            0    4     1  accessibles  Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;
            1    4     2          ams  Ljava/util/List<Ljava/lang/reflect/Method;>;
    Signature: (Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map<Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/List<Ljava/lang/reflect/Method;>;>;)Ljava/lang/reflect/Method;
    MethodParameters:
             Name  Flags
      sig          
      accessibles  

  private void sortMethodDescriptors(java.util.List<java.beans.MethodDescriptor>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.util.List methodDescriptors
         0: .line 807
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            ifnull 2
         1: .line 808
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
            aload 1 /* methodDescriptors */
            invokeinterface freemarker.ext.beans.MethodSorter.sortMethodDescriptors:(Ljava/util/List;)V
         2: .line 810
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List methodDescriptors
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lfreemarker/ext/beans/ClassIntrospector;
            0    3     1  methodDescriptors  Ljava/util/List<Ljava/beans/MethodDescriptor;>;
    Signature: (Ljava/util/List<Ljava/beans/MethodDescriptor;>;)V
    MethodParameters:
                   Name  Flags
      methodDescriptors  

  boolean isAllowedToExpose(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.reflect.Method method
         0: .line 813
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
            iconst_1
            if_icmplt 1
            aload 1 /* method */
            invokestatic freemarker.ext.beans.UnsafeMethods.isUnsafeMethod:(Ljava/lang/reflect/Method;)Z
            ifeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1  method  Ljava/lang/reflect/Method;
    MethodParameters:
        Name  Flags
      method  

  private static java.util.Map<java.lang.reflect.Method, java.lang.Class<?>[]> getArgTypesByMethod(java.util.Map<java.lang.Object, java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.Map classInfo
         0: .line 818
            aload 0 /* classInfo */
            getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 1 /* argTypes */
        start local 1 // java.util.Map argTypes
         1: .line 819
            aload 1 /* argTypes */
            ifnonnull 4
         2: .line 820
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* argTypes */
         3: .line 821
            aload 0 /* classInfo */
            getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
            aload 1 /* argTypes */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 823
      StackMap locals: java.util.Map
      StackMap stack:
            aload 1 /* argTypes */
            areturn
        end local 1 // java.util.Map argTypes
        end local 0 // java.util.Map classInfo
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  classInfo  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            1    5     1   argTypes  Ljava/util/Map<Ljava/lang/reflect/Method;[Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;)Ljava/util/Map<Ljava/lang/reflect/Method;[Ljava/lang/Class<*>;>;
    MethodParameters:
           Name  Flags
      classInfo  

  void clearCache();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 868
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.getHasSharedInstanceRestrictons:()Z
            ifeq 6
         1: .line 869
            new java.lang.IllegalStateException
            dup
         2: .line 870
            new java.lang.StringBuilder
            dup
            ldc "It's not allowed to clear the whole cache in a read-only "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 871
            ldc "instance. Use removeFromClassIntrospectionCache(String prefix) instead."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 870
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 869
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 873
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.forcedClearCache:()V
         7: .line 874
            return
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lfreemarker/ext/beans/ClassIntrospector;

  private void forcedClearCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 877
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 878
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         2: .line 879
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
            invokeinterface java.util.Set.clear:()V
         3: .line 880
            aload 0 /* this */
            dup
            getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
            iconst_1
            iadd
            putfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
         4: .line 882
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 15
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object top java.util.Iterator
      StackMap stack:
         5: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 2 /* regedMfREf */
        start local 2 // java.lang.ref.WeakReference regedMfREf
         6: .line 883
            aload 2 /* regedMfREf */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            astore 4 /* regedMf */
        start local 4 // java.lang.Object regedMf
         7: .line 884
            aload 4 /* regedMf */
            ifnull 15
         8: .line 885
            aload 4 /* regedMf */
            instanceof freemarker.ext.beans.ClassBasedModelFactory
            ifeq 11
         9: .line 886
            aload 4 /* regedMf */
            checkcast freemarker.ext.beans.ClassBasedModelFactory
            invokevirtual freemarker.ext.beans.ClassBasedModelFactory.clearCache:()V
        10: .line 887
            goto 15
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object java.lang.ref.WeakReference java.util.Iterator java.lang.Object
      StackMap stack:
        11: aload 4 /* regedMf */
            instanceof freemarker.ext.util.ModelCache
            ifeq 14
        12: .line 888
            aload 4 /* regedMf */
            checkcast freemarker.ext.util.ModelCache
            invokevirtual freemarker.ext.util.ModelCache.clearCache:()V
        13: .line 889
            goto 15
        14: .line 890
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            invokespecial freemarker.core.BugException.<init>:()V
            athrow
        end local 4 // java.lang.Object regedMf
        end local 2 // java.lang.ref.WeakReference regedMfREf
        15: .line 882
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        16: .line 895
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
        17: .line 877
            aload 1
            monitorexit
        18: goto 21
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object
      StackMap stack: java.lang.Throwable
        19: aload 1
            monitorexit
        20: athrow
        21: .line 897
      StackMap locals:
      StackMap stack:
            return
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lfreemarker/ext/beans/ClassIntrospector;
            6   15     2  regedMfREf  Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;
            7   15     4     regedMf  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1    18      19  any
          19    20      19  any

  void remove(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Class clazz
         0: .line 905
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 906
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 907
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         3: .line 908
            aload 0 /* this */
            dup
            getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
            iconst_1
            iadd
            putfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
         4: .line 910
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.Object top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 3 /* regedMfREf */
        start local 3 // java.lang.ref.WeakReference regedMfREf
         6: .line 911
            aload 3 /* regedMfREf */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            astore 5 /* regedMf */
        start local 5 // java.lang.Object regedMf
         7: .line 912
            aload 5 /* regedMf */
            ifnull 15
         8: .line 913
            aload 5 /* regedMf */
            instanceof freemarker.ext.beans.ClassBasedModelFactory
            ifeq 11
         9: .line 914
            aload 5 /* regedMf */
            checkcast freemarker.ext.beans.ClassBasedModelFactory
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassBasedModelFactory.removeFromCache:(Ljava/lang/Class;)V
        10: .line 915
            goto 15
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.Object java.lang.ref.WeakReference java.util.Iterator java.lang.Object
      StackMap stack:
        11: aload 5 /* regedMf */
            instanceof freemarker.ext.util.ModelCache
            ifeq 14
        12: .line 916
            aload 5 /* regedMf */
            checkcast freemarker.ext.util.ModelCache
            invokevirtual freemarker.ext.util.ModelCache.clearCache:()V
        13: .line 917
            goto 15
        14: .line 918
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            invokespecial freemarker.core.BugException.<init>:()V
            athrow
        end local 5 // java.lang.Object regedMf
        end local 3 // java.lang.ref.WeakReference regedMfREf
        15: .line 910
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        16: .line 923
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
        17: .line 905
            aload 2
            monitorexit
        18: goto 21
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.Object
      StackMap stack: java.lang.Throwable
        19: aload 2
            monitorexit
        20: athrow
        21: .line 925
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Class clazz
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lfreemarker/ext/beans/ClassIntrospector;
            0   22     1       clazz  Ljava/lang/Class<*>;
            6   15     3  regedMfREf  Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;
            7   15     5     regedMf  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1    18      19  any
          19    20      19  any
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
       Name  Flags
      clazz  

  int getClearingCounter();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 931
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 932
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
            aload 1
            monitorexit
         2: ireturn
         3: .line 931
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lfreemarker/ext/beans/ClassIntrospector;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  private void onSameNameClassesDetected(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.String className
         0: .line 941
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
            invokevirtual freemarker.log.Logger.isInfoEnabled:()Z
            ifeq 7
         1: .line 942
            getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
         2: .line 943
            new java.lang.StringBuilder
            dup
            ldc "Detected multiple classes with the same name, \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 944
            ldc "\". Assuming it was a class-reloading. Clearing class introspection "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 945
            ldc "caches to release old data."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 943
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 942
            invokevirtual freemarker.log.Logger.info:(Ljava/lang/String;)V
         7: .line 947
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.forcedClearCache:()V
         8: .line 948
            return
        end local 1 // java.lang.String className
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lfreemarker/ext/beans/ClassIntrospector;
            0    9     1  className  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      className  

  void registerModelFactory(freemarker.ext.beans.ClassBasedModelFactory);
    descriptor: (Lfreemarker/ext/beans/ClassBasedModelFactory;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.beans.ClassBasedModelFactory mf
         0: .line 954
            aload 0 /* this */
            aload 1 /* mf */
            invokevirtual freemarker.ext.beans.ClassIntrospector.registerModelFactory:(Ljava/lang/Object;)V
         1: .line 955
            return
        end local 1 // freemarker.ext.beans.ClassBasedModelFactory mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1    mf  Lfreemarker/ext/beans/ClassBasedModelFactory;
    MethodParameters:
      Name  Flags
      mf    

  void registerModelFactory(freemarker.ext.util.ModelCache);
    descriptor: (Lfreemarker/ext/util/ModelCache;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.util.ModelCache mf
         0: .line 958
            aload 0 /* this */
            aload 1 /* mf */
            invokevirtual freemarker.ext.beans.ClassIntrospector.registerModelFactory:(Ljava/lang/Object;)V
         1: .line 959
            return
        end local 1 // freemarker.ext.util.ModelCache mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1    mf  Lfreemarker/ext/util/ModelCache;
    MethodParameters:
      Name  Flags
      mf    

  private void registerModelFactory(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Object mf
         0: .line 963
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 964
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            new java.lang.ref.WeakReference
            dup
            aload 1 /* mf */
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactoriesRefQueue:Ljava/lang/ref/ReferenceQueue;
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 965
            aload 0 /* this */
            invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
         3: .line 963
            aload 2
            monitorexit
         4: goto 7
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
         5: aload 2
            monitorexit
         6: athrow
         7: .line 967
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lfreemarker/ext/beans/ClassIntrospector;
            0    8     1    mf  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    MethodParameters:
      Name  Flags
      mf    

  void unregisterModelFactory(freemarker.ext.beans.ClassBasedModelFactory);
    descriptor: (Lfreemarker/ext/beans/ClassBasedModelFactory;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.beans.ClassBasedModelFactory mf
         0: .line 970
            aload 0 /* this */
            aload 1 /* mf */
            invokevirtual freemarker.ext.beans.ClassIntrospector.unregisterModelFactory:(Ljava/lang/Object;)V
         1: .line 971
            return
        end local 1 // freemarker.ext.beans.ClassBasedModelFactory mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1    mf  Lfreemarker/ext/beans/ClassBasedModelFactory;
    MethodParameters:
      Name  Flags
      mf    

  void unregisterModelFactory(freemarker.ext.util.ModelCache);
    descriptor: (Lfreemarker/ext/util/ModelCache;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // freemarker.ext.util.ModelCache mf
         0: .line 974
            aload 0 /* this */
            aload 1 /* mf */
            invokevirtual freemarker.ext.beans.ClassIntrospector.unregisterModelFactory:(Ljava/lang/Object;)V
         1: .line 975
            return
        end local 1 // freemarker.ext.util.ModelCache mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lfreemarker/ext/beans/ClassIntrospector;
            0    2     1    mf  Lfreemarker/ext/util/ModelCache;
    MethodParameters:
      Name  Flags
      mf    

  void unregisterModelFactory(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Object mf
         0: .line 978
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 979
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         2: goto 6
         3: .line 980
      StackMap locals: java.lang.Object java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            astore 4 /* regedMf */
        start local 4 // java.lang.Object regedMf
         4: .line 981
            aload 4 /* regedMf */
            aload 1 /* mf */
            if_acmpne 6
         5: .line 982
            aload 3 /* it */
            invokeinterface java.util.Iterator.remove:()V
        end local 4 // java.lang.Object regedMf
         6: .line 979
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 3 // java.util.Iterator it
         7: .line 978
            aload 2
            monitorexit
         8: goto 11
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 987
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object mf
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lfreemarker/ext/beans/ClassIntrospector;
            0   12     1       mf  Ljava/lang/Object;
            2    7     3       it  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;>;
            4    6     4  regedMf  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    MethodParameters:
      Name  Flags
      mf    

  private void removeClearedModelFactoryReferences();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 991
            goto 12
        start local 1 // java.lang.ref.Reference cleardRef
         1: .line 992
      StackMap locals: java.lang.ref.Reference
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 993
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         3: goto 7
         4: .line 994
      StackMap locals: java.lang.Object java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            aload 1 /* cleardRef */
            if_acmpne 7
         5: .line 995
            aload 3 /* it */
            invokeinterface java.util.Iterator.remove:()V
         6: .line 996
            goto 8
         7: .line 993
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 3 // java.util.Iterator it
         8: .line 992
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        end local 1 // java.lang.ref.Reference cleardRef
        12: .line 991
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactoriesRefQueue:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            dup
            astore 1 /* cleardRef */
        start local 1 // java.lang.ref.Reference cleardRef
        13: ifnonnull 1
        14: .line 1001
            return
        end local 1 // java.lang.ref.Reference cleardRef
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lfreemarker/ext/beans/ClassIntrospector;
            1   12     1  cleardRef  Ljava/lang/ref/Reference<*>;
           13   15     1  cleardRef  Ljava/lang/ref/Reference<*>;
            3    8     3         it  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;>;
      Exception table:
        from    to  target  type
           2     9      10  any
          10    11      10  any

  static java.lang.Class<?>[] getArgTypes(java.util.Map<java.lang.Object, java.lang.Object>, java.lang.reflect.Method);
    descriptor: (Ljava/util/Map;Ljava/lang/reflect/Method;)[Ljava/lang/Class;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.Map classInfo
        start local 1 // java.lang.reflect.Method method
         0: .line 1008
            aload 0 /* classInfo */
            getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* argTypesByMethod */
        start local 2 // java.util.Map argTypesByMethod
         1: .line 1009
            aload 2 /* argTypesByMethod */
            aload 1 /* method */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class[]
            areturn
        end local 2 // java.util.Map argTypesByMethod
        end local 1 // java.lang.reflect.Method method
        end local 0 // java.util.Map classInfo
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0         classInfo  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            0    2     1            method  Ljava/lang/reflect/Method;
            1    2     2  argTypesByMethod  Ljava/util/Map<Ljava/lang/reflect/Method;[Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;Ljava/lang/reflect/Method;)[Ljava/lang/Class<*>;
    MethodParameters:
           Name  Flags
      classInfo  
      method     

  int keyCount(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)I
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Class clazz
         0: .line 1017
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.get:(Ljava/lang/Class;)Ljava/util/Map;
            astore 2 /* map */
        start local 2 // java.util.Map map
         1: .line 1018
            aload 2 /* map */
            invokeinterface java.util.Map.size:()I
            istore 3 /* count */
        start local 3 // int count
         2: .line 1019
            aload 2 /* map */
            getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 3
            iinc 3 /* count */ -1
         3: .line 1020
      StackMap locals: java.util.Map int
      StackMap stack:
            aload 2 /* map */
            getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
            iinc 3 /* count */ -1
         4: .line 1021
      StackMap locals:
      StackMap stack:
            aload 2 /* map */
            getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 5
            iinc 3 /* count */ -1
         5: .line 1022
      StackMap locals:
      StackMap stack:
            iload 3 /* count */
            ireturn
        end local 3 // int count
        end local 2 // java.util.Map map
        end local 1 // java.lang.Class clazz
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lfreemarker/ext/beans/ClassIntrospector;
            0    6     1  clazz  Ljava/lang/Class<*>;
            1    6     2    map  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            2    6     3  count  I
    Signature: (Ljava/lang/Class<*>;)I
    MethodParameters:
       Name  Flags
      clazz  

  java.util.Set<java.lang.Object> keySet(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // freemarker.ext.beans.ClassIntrospector this
        start local 1 // java.lang.Class clazz
         0: .line 1030
            new java.util.HashSet
            dup
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual freemarker.ext.beans.ClassIntrospector.get:(Ljava/lang/Class;)Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 2 /* set */
        start local 2 // java.util.Set set
         1: .line 1031
            aload 2 /* set */
            getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         2: .line 1032
            aload 2 /* set */
            getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         3: .line 1033
            aload 2 /* set */
            getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         4: .line 1034
            aload 2 /* set */
            areturn
        end local 2 // java.util.Set set
        end local 1 // java.lang.Class clazz
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lfreemarker/ext/beans/ClassIntrospector;
            0    5     1  clazz  Ljava/lang/Class<*>;
            1    5     2    set  Ljava/util/Set<Ljava/lang/Object;>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Set<Ljava/lang/Object;>;
    MethodParameters:
       Name  Flags
      clazz  

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

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

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

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

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

  boolean getHasSharedInstanceRestrictons();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 1065
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.hasSharedInstanceRestrictons:Z
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospector;

  boolean isShared();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 1074
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.shared:Z
            ireturn
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospector;

  java.lang.Object getSharedLock();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 1082
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            areturn
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/ext/beans/ClassIntrospector;

  java.lang.Object[] getRegisteredModelFactoriesSnapshot();
    descriptor: ()[Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // freemarker.ext.beans.ClassIntrospector this
         0: .line 1090
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 1091
            aload 0 /* this */
            getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
            invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
            aload 1
            monitorexit
         2: areturn
         3: .line 1090
      StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // freemarker.ext.beans.ClassIntrospector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lfreemarker/ext/beans/ClassIntrospector;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any
}
SourceFile: "ClassIntrospector.java"
NestMembers:
  freemarker.ext.beans.ClassIntrospector$MethodSignature  freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
InnerClasses:
  public final MethodAppearanceDecision = freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision of freemarker.ext.beans.BeansWrapper
  public final MethodAppearanceDecisionInput = freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput of freemarker.ext.beans.BeansWrapper
  private final MethodSignature = freemarker.ext.beans.ClassIntrospector$MethodSignature of freemarker.ext.beans.ClassIntrospector
  private PropertyReaderMethodPair = freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair of freemarker.ext.beans.ClassIntrospector
  public abstract Entry = java.util.Map$Entry of java.util.Map