public class freemarker.template.utility.DeepUnwrap
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: freemarker.template.utility.DeepUnwrap
super_class: java.lang.Object
{
private static final java.lang.Class OBJECT_CLASS;
descriptor: Ljava/lang/Class;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Ljava/lang/Object;
putstatic freemarker.template.utility.DeepUnwrap.OBJECT_CLASS:Ljava/lang/Class;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/template/utility/DeepUnwrap;
public static java.lang.Object unwrap(freemarker.template.TemplateModel);
descriptor: (Lfreemarker/template/TemplateModel;)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 model Lfreemarker/template/TemplateModel;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
model
public static java.lang.Object permissiveUnwrap(freemarker.template.TemplateModel);
descriptor: (Lfreemarker/template/TemplateModel;)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 model Lfreemarker/template/TemplateModel;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
model
public static java.lang.Object premissiveUnwrap(freemarker.template.TemplateModel);
descriptor: (Lfreemarker/template/TemplateModel;)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 model Lfreemarker/template/TemplateModel;
Exceptions:
throws freemarker.template.TemplateModelException
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
model
private static java.lang.Object unwrap(freemarker.template.TemplateModel, boolean);
descriptor: (Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 2
ifnull 6
3: aload 2
invokevirtual freemarker.core.Environment.getObjectWrapper:()Lfreemarker/template/ObjectWrapper;
astore 4
start local 4 4: aload 4
ifnull 6
5: aload 4
aconst_null
invokeinterface freemarker.template.ObjectWrapper.wrap:(Ljava/lang/Object;)Lfreemarker/template/TemplateModel;
astore 3
end local 4 6: StackMap locals: freemarker.core.Environment freemarker.template.TemplateModel
StackMap stack:
aload 0
aload 3
iload 1
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 model Lfreemarker/template/TemplateModel;
0 7 1 permissive Z
1 7 2 env Lfreemarker/core/Environment;
2 7 3 nullModel Lfreemarker/template/TemplateModel;
4 6 4 wrapper Lfreemarker/template/ObjectWrapper;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
model
permissive
private static java.lang.Object unwrap(freemarker.template.TemplateModel, freemarker.template.TemplateModel, boolean);
descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
instanceof freemarker.template.AdapterTemplateModel
ifeq 2
1: aload 0
checkcast freemarker.template.AdapterTemplateModel
getstatic freemarker.template.utility.DeepUnwrap.OBJECT_CLASS:Ljava/lang/Class;
invokeinterface freemarker.template.AdapterTemplateModel.getAdaptedObject:(Ljava/lang/Class;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.ext.util.WrapperTemplateModel
ifeq 4
3: aload 0
checkcast freemarker.ext.util.WrapperTemplateModel
invokeinterface freemarker.ext.util.WrapperTemplateModel.getWrappedObject:()Ljava/lang/Object;
areturn
4: StackMap locals:
StackMap stack:
aload 0
aload 1
if_acmpne 6
5: aconst_null
areturn
6: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateScalarModel
ifeq 8
7: aload 0
checkcast freemarker.template.TemplateScalarModel
invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
areturn
8: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateNumberModel
ifeq 10
9: aload 0
checkcast freemarker.template.TemplateNumberModel
invokeinterface freemarker.template.TemplateNumberModel.getAsNumber:()Ljava/lang/Number;
areturn
10: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateDateModel
ifeq 12
11: aload 0
checkcast freemarker.template.TemplateDateModel
invokeinterface freemarker.template.TemplateDateModel.getAsDate:()Ljava/util/Date;
areturn
12: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateBooleanModel
ifeq 14
13: aload 0
checkcast freemarker.template.TemplateBooleanModel
invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
14: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateSequenceModel
ifeq 24
15: aload 0
checkcast freemarker.template.TemplateSequenceModel
astore 3
start local 3 16: aload 3
invokeinterface freemarker.template.TemplateSequenceModel.size:()I
istore 4
start local 4 17: new java.util.ArrayList
dup
iload 4
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
start local 5 18: iconst_0
istore 6
start local 6 19: goto 22
20: StackMap locals: freemarker.template.TemplateModel freemarker.template.TemplateModel int freemarker.template.TemplateSequenceModel int java.util.ArrayList int
StackMap stack:
aload 5
aload 3
iload 6
invokeinterface freemarker.template.TemplateSequenceModel.get:(I)Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
21: iinc 6 1
StackMap locals:
StackMap stack:
22: iload 6
iload 4
if_icmplt 20
end local 6 23: aload 5
areturn
end local 5 end local 4 end local 3 24: StackMap locals: freemarker.template.TemplateModel freemarker.template.TemplateModel int
StackMap stack:
aload 0
instanceof freemarker.template.TemplateCollectionModel
ifeq 32
25: aload 0
checkcast freemarker.template.TemplateCollectionModel
astore 3
start local 3 26: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 27: aload 3
invokeinterface freemarker.template.TemplateCollectionModel.iterator:()Lfreemarker/template/TemplateModelIterator;
astore 5
start local 5 28: goto 30
29: StackMap locals: freemarker.template.TemplateCollectionModel java.util.ArrayList freemarker.template.TemplateModelIterator
StackMap stack:
aload 4
aload 5
invokeinterface freemarker.template.TemplateModelIterator.next:()Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
30: StackMap locals:
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
ifne 29
31: aload 4
areturn
end local 5 end local 4 end local 3 32: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.template.TemplateHashModelEx
ifeq 51
33: aload 0
checkcast freemarker.template.TemplateHashModelEx
astore 3
start local 3 34: new java.util.LinkedHashMap
dup
invokespecial java.util.LinkedHashMap.<init>:()V
astore 4
start local 4 35: aload 0
instanceof freemarker.template.TemplateHashModelEx2
ifeq 45
36: aload 0
checkcast freemarker.template.TemplateHashModelEx2
invokeinterface freemarker.template.TemplateHashModelEx2.keyValuePairIterator:()Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
astore 5
start local 5 37: goto 43
38: StackMap locals: freemarker.template.TemplateHashModelEx java.util.Map freemarker.template.TemplateHashModelEx2$KeyValuePairIterator
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.next:()Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
astore 6
start local 6 39: aload 4
40: aload 6
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getKey:()Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
41: aload 6
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getValue:()Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
42: invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 43: StackMap locals:
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.hasNext:()Z
ifne 38
end local 5 44: goto 50
45: StackMap locals:
StackMap stack:
aload 3
invokeinterface freemarker.template.TemplateHashModelEx.keys:()Lfreemarker/template/TemplateCollectionModel;
invokeinterface freemarker.template.TemplateCollectionModel.iterator:()Lfreemarker/template/TemplateModelIterator;
astore 5
start local 5 46: goto 49
47: StackMap locals: freemarker.template.TemplateModelIterator
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateModelIterator.next:()Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 48: aload 4
aload 6
aload 3
aload 6
invokeinterface freemarker.template.TemplateHashModelEx.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
aload 1
iload 2
invokestatic freemarker.template.utility.DeepUnwrap.unwrap:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;Z)Ljava/lang/Object;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 49: StackMap locals:
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
ifne 47
end local 5 50: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 51: StackMap locals:
StackMap stack:
iload 2
ifeq 53
52: aload 0
areturn
53: StackMap locals:
StackMap stack:
new freemarker.template.TemplateModelException
dup
new java.lang.StringBuilder
dup
ldc "Cannot deep-unwrap model of type "
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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial freemarker.template.TemplateModelException.<init>:(Ljava/lang/String;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 model Lfreemarker/template/TemplateModel;
0 54 1 nullModel Lfreemarker/template/TemplateModel;
0 54 2 permissive Z
16 24 3 seq Lfreemarker/template/TemplateSequenceModel;
17 24 4 size I
18 24 5 list Ljava/util/ArrayList;
19 23 6 i I
26 32 3 coll Lfreemarker/template/TemplateCollectionModel;
27 32 4 list Ljava/util/ArrayList;
28 32 5 it Lfreemarker/template/TemplateModelIterator;
34 51 3 hash Lfreemarker/template/TemplateHashModelEx;
35 51 4 map Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
37 44 5 kvps Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
39 43 6 kvp Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
46 50 5 keys Lfreemarker/template/TemplateModelIterator;
48 49 6 key Ljava/lang/String;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
model
nullModel
permissive
}
SourceFile: "DeepUnwrap.java"
InnerClasses:
public abstract KeyValuePair = freemarker.template.TemplateHashModelEx2$KeyValuePair of freemarker.template.TemplateHashModelEx2
public abstract KeyValuePairIterator = freemarker.template.TemplateHashModelEx2$KeyValuePairIterator of freemarker.template.TemplateHashModelEx2