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: ldc "freemarker.beans"
invokestatic freemarker.log.Logger.getLogger:(Ljava/lang/String;)Lfreemarker/log/Logger;
putstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
1: ldc "true"
ldc "freemarker.development"
2: ldc "false"
3: 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: ldc "org.zeroturnaround.javarebel.ClassEventListener"
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
pop
5: iconst_1
istore 0
start local 0 6: goto 13
end local 0 StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 1
start local 1 8: iconst_0
istore 0
start local 0 9: aload 1
instanceof java.lang.ClassNotFoundException
ifne 13
10: getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
ldc "Error initializing JRebel integration. JRebel integration disabled."
aload 1
invokevirtual freemarker.log.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
11: goto 13
StackMap locals: int java.lang.Throwable
StackMap stack: java.lang.Throwable
12: pop
end local 1 13: StackMap locals:
StackMap stack:
iload 0
ifeq 23
14: 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: astore 1
start local 1 16: goto 24
end local 1 StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 2
start local 2 18: aconst_null
astore 1
start local 1 19: getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
ldc "Error initializing JRebel integration. JRebel integration disabled."
aload 2
invokevirtual freemarker.log.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
20: goto 24
StackMap locals: int freemarker.ext.beans.ClassChangeNotifier java.lang.Throwable
StackMap stack: java.lang.Throwable
21: pop
end local 2 22: goto 24
end local 1 23: StackMap locals:
StackMap stack:
aconst_null
astore 1
start local 1 24: StackMap locals: freemarker.ext.beans.ClassChangeNotifier
StackMap stack:
aload 1
putstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
end local 1 end local 0 25: 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: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
27: 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 start local 1 start local 2 0: aload 0
aload 1
aload 2
iconst_0
iconst_0
invokespecial freemarker.ext.beans.ClassIntrospector.<init>:(Lfreemarker/ext/beans/ClassIntrospectorBuilder;Ljava/lang/Object;ZZ)V
1: return
end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: 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: aload 0
new java.util.HashSet
dup
iconst_0
invokespecial java.util.HashSet.<init>:(I)V
putfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
4: aload 0
new java.util.HashSet
dup
iconst_0
invokespecial java.util.HashSet.<init>:(I)V
putfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
5: aload 0
6: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
7: aload 0
new java.lang.ref.ReferenceQueue
dup
invokespecial java.lang.ref.ReferenceQueue.<init>:()V
putfield freemarker.ext.beans.ClassIntrospector.modelFactoriesRefQueue:Ljava/lang/ref/ReferenceQueue;
8: ldc "sharedLock"
aload 2
invokestatic freemarker.template.utility.NullArgumentException.check:(Ljava/lang/String;Ljava/lang/Object;)V
9: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getExposureLevel:()I
putfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
10: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getExposeFields:()Z
putfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
11: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getMethodAppearanceFineTuner:()Lfreemarker/ext/beans/MethodAppearanceFineTuner;
putfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
12: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getMethodSorter:()Lfreemarker/ext/beans/MethodSorter;
putfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
13: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.getTreatDefaultMethodsAsBeanMembers:()Z
putfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
14: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospectorBuilder.isBugfixed:()Z
putfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
15: aload 0
aload 2
putfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
16: aload 0
iload 3
putfield freemarker.ext.beans.ClassIntrospector.hasSharedInstanceRestrictons:Z
17: aload 0
iload 4
putfield freemarker.ext.beans.ClassIntrospector.shared:Z
18: getstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
ifnull 20
19: getstatic freemarker.ext.beans.ClassIntrospector.CLASS_CHANGE_NOTIFIER:Lfreemarker/ext/beans/ClassChangeNotifier;
aload 0
invokeinterface freemarker.ext.beans.ClassChangeNotifier.subscribe:(Lfreemarker/ext/beans/ClassIntrospector;)V
20: StackMap locals: freemarker.ext.beans.ClassIntrospector freemarker.ext.beans.ClassIntrospectorBuilder java.lang.Object int int
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 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 0: new freemarker.ext.beans.ClassIntrospectorBuilder
dup
aload 0
invokespecial freemarker.ext.beans.ClassIntrospectorBuilder.<init>:(Lfreemarker/ext/beans/ClassIntrospector;)V
areturn
end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
areturn
end local 2 2: StackMap locals:
StackMap stack:
aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 3
monitorenter
3: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 4
start local 4 4: aload 4
ifnull 6
aload 4
aload 3
monitorexit
5: areturn
6: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class top java.lang.Object java.util.Map
StackMap stack:
aload 1
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
astore 2
start local 2 7: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
aload 2
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 17
8: aload 0
aload 2
invokevirtual freemarker.ext.beans.ClassIntrospector.onSameNameClassesDetected:(Ljava/lang/String;)V
9: goto 17
10: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String java.lang.Object java.util.Map
StackMap stack:
aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
invokevirtual java.lang.Object.wait:()V
11: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 4
12: goto 17
StackMap locals:
StackMap stack: java.lang.InterruptedException
13: astore 5
start local 5 14: new java.lang.RuntimeException
dup
15: new java.lang.StringBuilder
dup
ldc "Class inrospection data lookup aborded: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 5 17: StackMap locals:
StackMap stack:
aload 4
ifnonnull 18
aload 0
getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 10
18: StackMap locals:
StackMap stack:
aload 4
ifnull 20
aload 4
aload 3
monitorexit
19: areturn
20: StackMap locals:
StackMap stack:
aload 0
getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 4 21: aload 3
monitorexit
22: goto 25
end local 2 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 25: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String
StackMap stack:
aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.createClassIntrospectionData:(Ljava/lang/Class;)Ljava/util/Map;
astore 3
start local 3 26: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 4
monitorenter
27: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
aload 1
aload 3
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
28: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
aload 2
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
29: 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: StackMap locals:
StackMap stack:
aload 3
astore 6
34: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 7
monitorenter
35: aload 0
getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
36: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
37: 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: StackMap locals:
StackMap stack:
aload 6
areturn
end local 3 42: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Class java.lang.String
StackMap stack: java.lang.Throwable
astore 5
43: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 7
monitorenter
44: aload 0
getfield freemarker.ext.beans.ClassIntrospector.classIntrospectionsInProgress:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
45: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
46: 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: 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 end local 1 end local 0 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 start local 1 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 2
start local 2 1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
ifeq 3
2: aload 0
aload 2
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.addFieldsToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;)V
3: StackMap locals: java.util.Map
StackMap stack:
aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;)Ljava/util/Map;
astore 3
start local 3 4: aload 0
aload 2
aload 3
invokevirtual freemarker.ext.beans.ClassIntrospector.addGenericGetToClassIntrospectionData:(Ljava/util/Map;Ljava/util/Map;)V
5: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
iconst_3
if_icmpeq 11
6: aload 0
aload 2
aload 1
aload 3
invokevirtual freemarker.ext.beans.ClassIntrospector.addBeanInfoToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;Ljava/util/Map;)V
7: 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
start local 4 9: 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
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
10: aload 2
invokeinterface java.util.Map.clear:()V
end local 4 11: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.addConstructorsToClassIntrospectionData:(Ljava/util/Map;Ljava/lang/Class;)V
12: aload 2
invokeinterface java.util.Map.size:()I
iconst_1
if_icmple 14
13: aload 2
areturn
14: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Map.size:()I
ifne 16
15: invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
areturn
16: StackMap locals:
StackMap stack:
aload 2
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
start local 4 17: aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
aload 4
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 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 2
invokevirtual java.lang.Class.getFields:()[Ljava/lang/reflect/Field;
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: goto 7
3: StackMap locals: java.lang.reflect.Field[] int
StackMap stack:
aload 3
iload 4
aaload
astore 5
start local 5 4: aload 5
invokevirtual java.lang.reflect.Field.getModifiers:()I
bipush 8
iand
ifne 6
5: aload 1
aload 5
invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 5 6: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
7: iload 4
aload 3
arraylength
if_icmplt 3
end local 4 8: return
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 2
invokestatic java.beans.Introspector.getBeanInfo:(Ljava/lang/Class;)Ljava/beans/BeanInfo;
astore 4
start local 4 1: aload 0
aload 4
aload 2
invokevirtual freemarker.ext.beans.ClassIntrospector.getPropertyDescriptors:(Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
astore 5
start local 5 2: aload 5
invokeinterface java.util.List.size:()I
istore 6
start local 6 3: iload 6
iconst_1
isub
istore 7
start local 7 4: goto 10
5: 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
6: aload 1
aload 5
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.beans.PropertyDescriptor
aload 2
7: aload 3
8: invokevirtual freemarker.ext.beans.ClassIntrospector.addPropertyDescriptorToClassIntrospectionData:(Ljava/util/Map;Ljava/beans/PropertyDescriptor;Ljava/lang/Class;Ljava/util/Map;)V
9: iinc 7 -1
StackMap locals:
StackMap stack:
10: iload 7
ifge 5
end local 7 11: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
iconst_2
if_icmpge 63
12: new freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision
dup
invokespecial freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.<init>:()V
astore 7
start local 7 13: aconst_null
astore 8
start local 8 14: aload 0
aload 4
aload 2
invokevirtual freemarker.ext.beans.ClassIntrospector.getMethodDescriptors:(Ljava/beans/BeanInfo;Ljava/lang/Class;)Ljava/util/List;
astore 9
start local 9 15: aload 0
aload 9
invokevirtual freemarker.ext.beans.ClassIntrospector.sortMethodDescriptors:(Ljava/util/List;)V
16: aload 9
invokeinterface java.util.List.size:()I
istore 10
start local 10 17: aconst_null
astore 11
start local 11 18: iload 10
iconst_1
isub
istore 12
start local 12 19: goto 62
20: 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
iload 12
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.beans.MethodDescriptor
invokevirtual java.beans.MethodDescriptor.getMethod:()Ljava/lang/reflect/Method;
aload 3
invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
astore 13
start local 13 21: aload 13
ifnull 61
aload 0
aload 13
invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
ifeq 61
22: aload 7
aload 13
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.setDefaults:(Ljava/lang/reflect/Method;)V
23: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
ifnull 29
24: aload 8
ifnonnull 26
25: new freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput
dup
invokespecial freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.<init>:()V
astore 8
26: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 8
aload 2
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.setContainingClass:(Ljava/lang/Class;)V
27: aload 8
aload 13
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecisionInput.setMethod:(Ljava/lang/reflect/Method;)V
28: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
aload 8
aload 7
invokeinterface freemarker.ext.beans.MethodAppearanceFineTuner.process:(Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecisionInput;Lfreemarker/ext/beans/BeansWrapper$MethodAppearanceDecision;)V
29: StackMap locals:
StackMap stack:
aload 7
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getExposeAsProperty:()Ljava/beans/PropertyDescriptor;
astore 14
start local 14 30: aload 14
ifnull 36
31: aload 7
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getReplaceExistingProperty:()Z
ifne 33
32: aload 1
aload 14
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: StackMap locals: java.beans.PropertyDescriptor
StackMap stack:
aload 0
34: aload 1
aload 14
aload 2
aload 3
35: invokevirtual freemarker.ext.beans.ClassIntrospector.addPropertyDescriptorToClassIntrospectionData:(Ljava/util/Map;Ljava/beans/PropertyDescriptor;Ljava/lang/Class;Ljava/util/Map;)V
36: StackMap locals:
StackMap stack:
aload 7
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getExposeMethodAs:()Ljava/lang/String;
astore 15
start local 15 37: aload 15
ifnull 61
38: aload 1
aload 15
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 16
start local 16 39: aload 16
instanceof java.lang.reflect.Method
ifeq 48
40: new freemarker.ext.beans.OverloadedMethods
dup
aload 0
getfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
invokespecial freemarker.ext.beans.OverloadedMethods.<init>:(Z)V
astore 17
start local 17 41: aload 17
aload 16
checkcast java.lang.reflect.Method
invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
42: aload 17
aload 13
invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
43: aload 1
aload 15
aload 17
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
44: aload 11
ifnull 46
45: aload 11
aload 16
invokevirtual java.util.IdentityHashMap.containsKey:(Ljava/lang/Object;)Z
ifne 61
46: StackMap locals: java.lang.String java.lang.Object freemarker.ext.beans.OverloadedMethods
StackMap stack:
aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
aload 16
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 17 47: goto 61
StackMap locals:
StackMap stack:
48: aload 16
instanceof freemarker.ext.beans.OverloadedMethods
ifeq 51
49: aload 16
checkcast freemarker.ext.beans.OverloadedMethods
aload 13
invokevirtual freemarker.ext.beans.OverloadedMethods.addMethod:(Ljava/lang/reflect/Method;)V
50: goto 61
StackMap locals:
StackMap stack:
51: aload 7
invokevirtual freemarker.ext.beans.BeansWrapper$MethodAppearanceDecision.getMethodShadowsProperty:()Z
ifne 53
52: aload 16
instanceof freemarker.ext.beans.FastPropertyDescriptor
ifne 61
53: StackMap locals:
StackMap stack:
aload 1
aload 15
aload 13
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
54: aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
aload 13
55: aload 13
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
56: invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Class[]
astore 17
start local 17 57: aload 17
ifnull 61
58: aload 11
ifnonnull 60
59: new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
astore 11
60: StackMap locals: java.lang.Class[]
StackMap stack:
aload 11
aload 13
aconst_null
invokevirtual java.util.IdentityHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 17 end local 16 end local 15 end local 14 end local 13 61: 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 -1
StackMap locals:
StackMap stack:
62: iload 12
ifge 20
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 63: 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 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 1
invokeinterface java.beans.BeanInfo.getPropertyDescriptors:()[Ljava/beans/PropertyDescriptor;
astore 3
start local 3 1: aload 3
ifnull 2
aload 3
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
goto 3
2: StackMap locals: java.beans.PropertyDescriptor[]
StackMap stack:
invokestatic java.util.Collections.emptyList:()Ljava/util/List;
3: StackMap locals:
StackMap stack: java.util.List
astore 4
start local 4 4: aload 0
getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
ifeq 5
getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
ifnonnull 6
5: StackMap locals: java.util.List
StackMap stack:
aload 4
areturn
6: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 7: aload 2
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
start local 6 9: getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
aload 6
invokeinterface freemarker.core._Java8.isDefaultMethod:(Ljava/lang/reflect/Method;)Z
ifeq 25
aload 6
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpeq 25
10: aload 6
invokevirtual java.lang.reflect.Method.isBridge:()Z
ifne 25
11: aload 6
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
astore 10
start local 10 12: aload 10
arraylength
ifeq 14
13: aload 10
arraylength
iconst_1
if_icmpne 25
aload 10
iconst_0
aaload
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
if_acmpne 25
14: 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
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aload 6
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
15: invokestatic freemarker.ext.beans._MethodUtil.getBeanPropertyNameFromReaderMethodName:(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/String;
astore 11
start local 11 16: aload 11
ifnull 25
17: aload 5
ifnonnull 19
18: new java.util.LinkedHashMap
dup
invokespecial java.util.LinkedHashMap.<init>:()V
astore 5
19: StackMap locals: java.lang.String
StackMap stack:
aload 10
arraylength
ifne 22
20: aload 0
aload 5
aload 11
aload 6
invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyReaderMethod:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/reflect/Method;)V
21: goto 25
22: StackMap locals:
StackMap stack:
aload 0
aload 5
aload 11
23: new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
dup
aconst_null
aload 6
invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
24: invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyReaderMethodPair:(Ljava/util/LinkedHashMap;Ljava/lang/String;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
end local 11 end local 10 end local 6 25: 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: aload 5
ifnonnull 29
28: aload 4
areturn
29: 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
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
start local 6 31: aload 0
aload 5
aload 6
invokevirtual freemarker.ext.beans.ClassIntrospector.mergeInPropertyDescriptor:(Ljava/util/LinkedHashMap;Ljava/beans/PropertyDescriptor;)V
end local 6 32: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 30
33: new java.util.ArrayList
dup
aload 5
invokevirtual java.util.LinkedHashMap.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 6
start local 6 34: aload 5
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
start local 7 36: aload 7
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 37: aload 7
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
astore 10
start local 10 38: aload 10
instanceof java.beans.PropertyDescriptor
ifeq 41
39: aload 6
aload 10
checkcast java.beans.PropertyDescriptor
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
40: goto 68
41: 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
instanceof java.lang.reflect.Method
ifeq 45
42: aload 10
checkcast java.lang.reflect.Method
astore 11
start local 11 43: aconst_null
astore 12
start local 12 44: goto 54
end local 12 end local 11 StackMap locals:
StackMap stack:
45: aload 10
instanceof freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
ifeq 53
46: aload 10
checkcast freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
astore 13
start local 13 47: aload 13
getfield freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.readMethod:Ljava/lang/reflect/Method;
astore 11
start local 11 48: aload 13
getfield freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.indexedReadMethod:Ljava/lang/reflect/Method;
astore 12
start local 12 49: aload 11
ifnull 54
aload 12
ifnull 54
50: aload 12
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
aload 11
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
if_acmpeq 54
51: aconst_null
astore 12
end local 13 52: goto 54
end local 12 end local 11 53: StackMap locals:
StackMap stack:
new freemarker.core.BugException
dup
invokespecial freemarker.core.BugException.<init>:()V
athrow
start local 11 start local 12 54: StackMap locals: java.lang.reflect.Method java.lang.reflect.Method
StackMap stack:
aload 6
55: aload 12
ifnull 60
56: new java.beans.IndexedPropertyDescriptor
dup
aload 9
57: aload 11
aconst_null
aload 12
aconst_null
58: 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: goto 61
60: StackMap locals:
StackMap stack: java.util.List
new java.beans.PropertyDescriptor
dup
aload 9
aload 11
aconst_null
invokespecial java.beans.PropertyDescriptor.<init>:(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
61: 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: goto 68
StackMap locals:
StackMap stack: java.beans.IntrospectionException
63: astore 13
start local 13 64: getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
invokevirtual freemarker.log.Logger.isWarnEnabled:()Z
ifeq 68
65: 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
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
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
66: aload 13
67: invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 13 end local 12 end local 11 end local 10 end local 9 end local 7 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:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 35
69: aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 2
invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
astore 3
start local 3 1: aload 1
aload 3
aload 2
invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 2: aload 4
ifnull 5
3: new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
dup
aload 2
invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/beans/PropertyDescriptor;)V
astore 5
start local 5 4: aload 0
aload 1
aload 3
aload 4
aload 5
invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
end local 5 5: StackMap locals: java.lang.String java.lang.Object
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 1
aload 2
aload 3
invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 1: aload 4
ifnull 3
2: aload 0
aload 1
aload 2
aload 4
aload 3
invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
3: StackMap locals: java.lang.Object
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 1
aload 2
aload 3
invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 1: aload 4
ifnull 5
2: aload 0
aload 1
aload 2
3: aload 4
new freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
dup
aload 3
aconst_null
invokespecial freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.<init>:(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
4: invokevirtual freemarker.ext.beans.ClassIntrospector.putIfMergedPropertyReaderMethodPairDiffers:(Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/lang/Object;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)V
5: StackMap locals: java.lang.Object
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 3
invokestatic freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.from:(Ljava/lang/Object;)Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
astore 5
start local 5 1: aload 5
aload 4
invokestatic freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.merge:(Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;)Lfreemarker/ext/beans/ClassIntrospector$PropertyReaderMethodPair;
astore 6
start local 6 2: aload 6
aload 4
invokevirtual freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair.equals:(Ljava/lang/Object;)Z
ifne 4
3: aload 1
aload 2
aload 6
invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals: freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair freemarker.ext.beans.ClassIntrospector$PropertyReaderMethodPair
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 1
invokeinterface java.beans.BeanInfo.getMethodDescriptors:()[Ljava/beans/MethodDescriptor;
astore 3
start local 3 1: aload 3
ifnull 3
aload 3
arraylength
ifeq 3
2: aload 3
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: StackMap locals:
StackMap stack: java.util.List
astore 4
start local 4 5: aload 0
getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
ifeq 6
getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
ifnonnull 7
6: StackMap locals: java.util.List
StackMap stack:
aload 4
areturn
7: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 8: aload 2
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
start local 6 10: getstatic freemarker.core._JavaVersions.JAVA_8:Lfreemarker/core/_Java8;
aload 6
invokeinterface freemarker.core._Java8.isDefaultMethod:(Ljava/lang/reflect/Method;)Z
ifeq 18
aload 6
invokevirtual java.lang.reflect.Method.isBridge:()Z
ifne 18
11: aload 5
ifnonnull 13
12: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 5
13: 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
aload 6
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
start local 10 14: aload 10
ifnonnull 17
15: new java.util.ArrayList
dup
iconst_0
invokespecial java.util.ArrayList.<init>:(I)V
astore 10
16: aload 5
aload 6
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aload 10
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: StackMap locals: java.util.List
StackMap stack:
aload 10
aload 6
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 end local 6 18: 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: aload 5
ifnonnull 22
21: aload 4
areturn
22: 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
invokeinterface java.util.List.size:()I
bipush 16
iadd
invokespecial java.util.ArrayList.<init>:(I)V
23: astore 6
start local 6 24: aload 4
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
start local 7 26: aload 7
invokevirtual java.beans.MethodDescriptor.getMethod:()Ljava/lang/reflect/Method;
astore 9
start local 9 27: aload 0
28: aload 5
aload 9
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
29: invokevirtual freemarker.ext.beans.ClassIntrospector.containsMethodWithSameParameterTypes:(Ljava/util/List;Ljava/lang/reflect/Method;)Z
30: ifne 32
31: aload 6
aload 7
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 9 end local 7 32: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 25
33: aload 6
astore 4
34: aload 5
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
start local 7 36: aload 7
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
start local 9 38: aload 4
new java.beans.MethodDescriptor
dup
aload 9
invokespecial java.beans.MethodDescriptor.<init>:(Ljava/lang/reflect/Method;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 39: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 37
end local 7 40: 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: aload 4
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
astore 3
start local 3 3: aload 1
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
start local 4 5: aload 4
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
aload 3
invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
ifeq 7
6: iconst_1
ireturn
end local 4 7: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 2
invokevirtual java.beans.PropertyDescriptor.getReadMethod:()Ljava/lang/reflect/Method;
aload 4
invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
astore 5
start local 5 1: aload 5
ifnull 3
aload 0
aload 5
invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
ifne 3
2: aconst_null
astore 5
3: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 2
instanceof java.beans.IndexedPropertyDescriptor
ifeq 13
4: aload 2
checkcast java.beans.IndexedPropertyDescriptor
invokevirtual java.beans.IndexedPropertyDescriptor.getIndexedReadMethod:()Ljava/lang/reflect/Method;
aload 4
5: invokestatic freemarker.ext.beans.ClassIntrospector.getMatchingAccessibleMethod:(Ljava/lang/reflect/Method;Ljava/util/Map;)Ljava/lang/reflect/Method;
astore 6
start local 6 6: aload 6
ifnull 8
aload 0
aload 6
invokevirtual freemarker.ext.beans.ClassIntrospector.isAllowedToExpose:(Ljava/lang/reflect/Method;)Z
ifne 8
7: aconst_null
astore 6
8: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 6
ifnull 14
9: aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.getArgTypesByMethod:(Ljava/util/Map;)Ljava/util/Map;
10: aload 6
aload 6
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
11: invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
12: goto 14
end local 6 13: StackMap locals:
StackMap stack:
aconst_null
astore 6
start local 6 14: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 5
ifnonnull 15
aload 6
ifnull 16
15: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
new freemarker.ext.beans.FastPropertyDescriptor
dup
aload 5
aload 6
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: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: getstatic freemarker.ext.beans.ClassIntrospector$MethodSignature.GET_STRING_SIGNATURE:Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
aload 2
1: invokestatic freemarker.ext.beans.ClassIntrospector.getFirstAccessibleMethod:(Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map;)Ljava/lang/reflect/Method;
astore 3
start local 3 2: aload 3
ifnonnull 5
3: getstatic freemarker.ext.beans.ClassIntrospector$MethodSignature.GET_OBJECT_SIGNATURE:Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;
aload 2
4: invokestatic freemarker.ext.beans.ClassIntrospector.getFirstAccessibleMethod:(Lfreemarker/ext/beans/ClassIntrospector$MethodSignature;Ljava/util/Map;)Ljava/lang/reflect/Method;
astore 3
5: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 3
ifnull 7
6: aload 1
getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
aload 3
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 2
invokevirtual java.lang.Class.getConstructors:()[Ljava/lang/reflect/Constructor;
astore 3
start local 3 1: aload 3
arraylength
iconst_1
if_icmpne 5
2: aload 3
iconst_0
aaload
astore 4
start local 4 3: aload 1
getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
new freemarker.ext.beans.SimpleMethod
dup
aload 4
aload 4
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 4: goto 16
StackMap locals: java.lang.reflect.Constructor[]
StackMap stack:
5: aload 3
arraylength
iconst_1
if_icmple 16
6: new freemarker.ext.beans.OverloadedMethods
dup
aload 0
getfield freemarker.ext.beans.ClassIntrospector.bugfixed:Z
invokespecial freemarker.ext.beans.OverloadedMethods.<init>:(Z)V
astore 4
start local 4 7: iconst_0
istore 5
start local 5 8: goto 11
9: StackMap locals: freemarker.ext.beans.OverloadedMethods int
StackMap stack:
aload 4
aload 3
iload 5
aaload
invokevirtual freemarker.ext.beans.OverloadedMethods.addConstructor:(Ljava/lang/reflect/Constructor;)V
10: iinc 5 1
StackMap locals:
StackMap stack:
11: iload 5
aload 3
arraylength
if_icmplt 9
end local 5 12: aload 1
getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
aload 4
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 end local 3 13: goto 16
StackMap locals: freemarker.ext.beans.ClassIntrospector java.util.Map java.lang.Class
StackMap stack: java.lang.SecurityException
14: astore 3
start local 3 15: 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
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
invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 3 16: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 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 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 1
start local 1 1: aload 0
aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
2: aload 1
areturn
end local 1 end local 0 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 start local 1 0: aload 0
invokevirtual java.lang.Class.getModifiers:()I
invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
ifeq 19
1: aload 0
invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 12
4: StackMap locals: java.lang.reflect.Method[] int
StackMap stack:
aload 2
iload 3
aaload
astore 4
start local 4 5: new freemarker.ext.beans.ClassIntrospector$MethodSignature
dup
aload 4
invokespecial freemarker.ext.beans.ClassIntrospector$MethodSignature.<init>:(Ljava/lang/reflect/Method;)V
astore 5
start local 5 6: aload 1
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 6
start local 6 7: aload 6
ifnonnull 10
8: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 6
9: aload 1
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
10: StackMap locals: java.lang.reflect.Method freemarker.ext.beans.ClassIntrospector$MethodSignature java.util.List
StackMap stack:
aload 6
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 6 end local 5 end local 4 11: iinc 3 1
StackMap locals:
StackMap stack:
12: iload 3
aload 2
arraylength
if_icmplt 4
end local 3 13: return
end local 2 14: StackMap locals: java.lang.Class java.util.Map
StackMap stack: java.lang.SecurityException
astore 2
start local 2 15: 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: aload 0
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: 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
18: invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 19: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
astore 2
start local 2 20: iconst_0
istore 3
start local 3 21: goto 24
22: StackMap locals: java.lang.Class[] int
StackMap stack:
aload 2
iload 3
aaload
aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
23: iinc 3 1
StackMap locals:
StackMap stack:
24: iload 3
aload 2
arraylength
if_icmplt 22
end local 3 25: aload 0
invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
astore 3
start local 3 26: aload 3
ifnull 28
27: aload 3
aload 1
invokestatic freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods:(Ljava/lang/Class;Ljava/util/Map;)V
28: StackMap locals: java.lang.Class java.util.Map java.lang.Class[] java.lang.Class
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
new freemarker.ext.beans.ClassIntrospector$MethodSignature
dup
aload 0
invokespecial freemarker.ext.beans.ClassIntrospector$MethodSignature.<init>:(Ljava/lang/reflect/Method;)V
astore 2
start local 2 3: aload 1
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 3
start local 3 4: aload 3
ifnonnull 6
5: aconst_null
areturn
6: StackMap locals: freemarker.ext.beans.ClassIntrospector$MethodSignature java.util.List
StackMap stack:
aload 3
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
start local 4 8: aload 4
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
aload 0
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
if_acmpne 10
9: aload 4
areturn
end local 4 10: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
11: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 1
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
invokeinterface java.util.List.isEmpty:()Z
ifeq 3
2: StackMap locals: java.util.List
StackMap stack:
aconst_null
areturn
3: StackMap locals:
StackMap stack:
aload 2
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.reflect.Method
areturn
end local 2 end local 1 end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
ifnull 2
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
aload 1
invokeinterface freemarker.ext.beans.MethodSorter.sortMethodDescriptors:(Ljava/util/List;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
iconst_1
if_icmplt 1
aload 1
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 end local 0 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 0: aload 0
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
start local 1 1: aload 1
ifnonnull 4
2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 1
3: aload 0
getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
aload 1
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals: java.util.Map
StackMap stack:
aload 1
areturn
end local 1 end local 0 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 0: aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.getHasSharedInstanceRestrictons:()Z
ifeq 6
1: new java.lang.IllegalStateException
dup
2: 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
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: ldc "instance. Use removeFromClassIntrospectionCache(String prefix) instead."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.forcedClearCache:()V
7: return
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
invokeinterface java.util.Map.clear:()V
2: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
invokeinterface java.util.Set.clear:()V
3: aload 0
dup
getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
iconst_1
iadd
putfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
4: aload 0
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
start local 2 6: aload 2
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
astore 4
start local 4 7: aload 4
ifnull 15
8: aload 4
instanceof freemarker.ext.beans.ClassBasedModelFactory
ifeq 11
9: aload 4
checkcast freemarker.ext.beans.ClassBasedModelFactory
invokevirtual freemarker.ext.beans.ClassBasedModelFactory.clearCache:()V
10: 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
instanceof freemarker.ext.util.ModelCache
ifeq 14
12: aload 4
checkcast freemarker.ext.util.ModelCache
invokevirtual freemarker.ext.util.ModelCache.clearCache:()V
13: goto 15
14: StackMap locals:
StackMap stack:
new freemarker.core.BugException
dup
invokespecial freemarker.core.BugException.<init>:()V
athrow
end local 4 end local 2 15: 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: aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
17: 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: StackMap locals:
StackMap stack:
return
end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cache:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 0
getfield freemarker.ext.beans.ClassIntrospector.cacheClassNames:Ljava/util/Set;
aload 1
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
3: aload 0
dup
getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
iconst_1
iadd
putfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
4: aload 0
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
start local 3 6: aload 3
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
astore 5
start local 5 7: aload 5
ifnull 15
8: aload 5
instanceof freemarker.ext.beans.ClassBasedModelFactory
ifeq 11
9: aload 5
checkcast freemarker.ext.beans.ClassBasedModelFactory
aload 1
invokevirtual freemarker.ext.beans.ClassBasedModelFactory.removeFromCache:(Ljava/lang/Class;)V
10: 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
instanceof freemarker.ext.util.ModelCache
ifeq 14
12: aload 5
checkcast freemarker.ext.util.ModelCache
invokevirtual freemarker.ext.util.ModelCache.clearCache:()V
13: goto 15
14: StackMap locals:
StackMap stack:
new freemarker.core.BugException
dup
invokespecial freemarker.core.BugException.<init>:()V
athrow
end local 5 end local 3 15: 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: aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
17: 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: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.clearingCounter:I
aload 1
monitorexit
2: ireturn
3: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
4: athrow
end local 0 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 start local 1 0: getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
invokevirtual freemarker.log.Logger.isInfoEnabled:()Z
ifeq 7
1: getstatic freemarker.ext.beans.ClassIntrospector.LOG:Lfreemarker/log/Logger;
2: new java.lang.StringBuilder
dup
ldc "Detected multiple classes with the same name, \""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
3: ldc "\". Assuming it was a class-reloading. Clearing class introspection "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: ldc "caches to release old data."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokevirtual freemarker.log.Logger.info:(Ljava/lang/String;)V
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.forcedClearCache:()V
8: return
end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.registerModelFactory:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.registerModelFactory:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
new java.lang.ref.WeakReference
dup
aload 1
aload 0
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: aload 0
invokevirtual freemarker.ext.beans.ClassIntrospector.removeClearedModelFactoryReferences:()V
3: 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: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.unregisterModelFactory:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.unregisterModelFactory:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 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 start local 1 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
start local 3 2: goto 6
3: StackMap locals: java.lang.Object java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.ref.WeakReference
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
astore 4
start local 4 4: aload 4
aload 1
if_acmpne 6
5: aload 3
invokeinterface java.util.Iterator.remove:()V
end local 4 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 3 7: 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: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 0: goto 12
start local 1 1: StackMap locals: java.lang.ref.Reference
StackMap stack:
aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 2
monitorenter
2: aload 0
getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
start local 3 3: goto 7
4: StackMap locals: java.lang.Object java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
aload 1
if_acmpne 7
5: aload 3
invokeinterface java.util.Iterator.remove:()V
6: goto 8
7: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 3 8: 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 12: StackMap locals:
StackMap stack:
aload 0
getfield freemarker.ext.beans.ClassIntrospector.modelFactoriesRefQueue:Ljava/lang/ref/ReferenceQueue;
invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
dup
astore 1
start local 1 13: ifnonnull 1
14: return
end local 1 end local 0 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 start local 1 0: aload 0
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
start local 2 1: aload 2
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Class[]
areturn
end local 2 end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokevirtual freemarker.ext.beans.ClassIntrospector.get:(Ljava/lang/Class;)Ljava/util/Map;
astore 2
start local 2 1: aload 2
invokeinterface java.util.Map.size:()I
istore 3
start local 3 2: aload 2
getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 3
iinc 3 -1
3: StackMap locals: java.util.Map int
StackMap stack:
aload 2
getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 4
iinc 3 -1
4: StackMap locals:
StackMap stack:
aload 2
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 -1
5: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: new java.util.HashSet
dup
aload 0
aload 1
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
start local 2 1: aload 2
getstatic freemarker.ext.beans.ClassIntrospector.CONSTRUCTORS_KEY:Ljava/lang/Object;
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
2: aload 2
getstatic freemarker.ext.beans.ClassIntrospector.GENERIC_GET_KEY:Ljava/lang/Object;
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
3: aload 2
getstatic freemarker.ext.beans.ClassIntrospector.ARG_TYPES_BY_METHOD_KEY:Ljava/lang/Object;
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
4: aload 2
areturn
end local 2 end local 1 end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposureLevel:I
ireturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.exposeFields:Z
ireturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.treatDefaultMethodsAsBeanMembers:Z
ireturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodAppearanceFineTuner:Lfreemarker/ext/beans/MethodAppearanceFineTuner;
areturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.methodSorter:Lfreemarker/ext/beans/MethodSorter;
areturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.hasSharedInstanceRestrictons:Z
ireturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.shared:Z
ireturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
areturn
end local 0 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 0: aload 0
getfield freemarker.ext.beans.ClassIntrospector.sharedLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield freemarker.ext.beans.ClassIntrospector.modelFactories:Ljava/util/List;
invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
aload 1
monitorexit
2: areturn
3: StackMap locals: freemarker.ext.beans.ClassIntrospector java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
4: athrow
end local 0 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