class freemarker.core.IteratorBlock$IterationContext implements freemarker.core.LocalContext
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: freemarker.core.IteratorBlock$IterationContext
super_class: java.lang.Object
{
private static final java.lang.String LOOP_STATE_HAS_NEXT;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "_has_next"
private static final java.lang.String LOOP_STATE_INDEX;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "_index"
private java.lang.Object openedIterator;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private boolean hasNext;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private freemarker.template.TemplateModel loopVar;
descriptor: Lfreemarker/template/TemplateModel;
flags: (0x0002) ACC_PRIVATE
private freemarker.template.TemplateModel loopVar2;
descriptor: Lfreemarker/template/TemplateModel;
flags: (0x0002) ACC_PRIVATE
private int index;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean alreadyEntered;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.Collection localVarNames;
descriptor: Ljava/util/Collection;
flags: (0x0002) ACC_PRIVATE
private java.lang.String loopVarName;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.lang.String loopVar2Name;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private final freemarker.template.TemplateModel listedValue;
descriptor: Lfreemarker/template/TemplateModel;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final freemarker.core.IteratorBlock this$0;
descriptor: Lfreemarker/core/IteratorBlock;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(freemarker.core.IteratorBlock, freemarker.template.TemplateModel, java.lang.String, java.lang.String);
descriptor: (Lfreemarker/core/IteratorBlock;Lfreemarker/template/TemplateModel;Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=5
start local 0 start local 2 start local 3 start local 4 0: aload 0
aload 1
putfield freemarker.core.IteratorBlock$IterationContext.this$0:Lfreemarker/core/IteratorBlock;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
2: aload 0
aload 2
putfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
3: aload 0
aload 3
putfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
4: aload 0
aload 4
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
5: return
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 6 2 listedValue Lfreemarker/template/TemplateModel;
0 6 3 loopVarName Ljava/lang/String;
0 6 4 loopVar2Name Ljava/lang/String;
MethodParameters:
Name Flags
this$0 final
listedValue
loopVarName
loopVar2Name
boolean accept(freemarker.core.Environment);
descriptor: (Lfreemarker/core/Environment;)Z
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.this$0:Lfreemarker/core/IteratorBlock;
invokevirtual freemarker.core.IteratorBlock.getChildBuffer:()[Lfreemarker/core/TemplateElement;
invokevirtual freemarker.core.IteratorBlock$IterationContext.executeNestedContent:(Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 1 1 env Lfreemarker/core/Environment;
Exceptions:
throws freemarker.template.TemplateException, java.io.IOException
MethodParameters:
Name Flags
env
void loopForItemsElement(freemarker.core.Environment, freemarker.core.TemplateElement[], java.lang.String, java.lang.String);
descriptor: (Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.alreadyEntered:Z
ifeq 4
1: new freemarker.core._MiscTemplateException
dup
aload 1
2: ldc "The #items directive was already entered earlier for this listing."
3: invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Environment;Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield freemarker.core.IteratorBlock$IterationContext.alreadyEntered:Z
5: aload 0
aload 3
putfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
6: aload 0
aload 4
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
7: aload 0
aload 1
aload 2
invokevirtual freemarker.core.IteratorBlock$IterationContext.executeNestedContent:(Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
pop
8: goto 13
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 5
10: aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
11: aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
12: aload 5
athrow
13: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
14: aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
15: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 16 1 env Lfreemarker/core/Environment;
0 16 2 childBuffer [Lfreemarker/core/TemplateElement;
0 16 3 loopVarName Ljava/lang/String;
0 16 4 loopVar2Name Ljava/lang/String;
Exception table:
from to target type
0 9 9 any
Exceptions:
throws freemarker.core.NonSequenceOrCollectionException, freemarker.template.TemplateModelException, freemarker.core.InvalidReferenceException, freemarker.template.TemplateException, java.io.IOException
MethodParameters:
Name Flags
env
childBuffer
loopVarName
loopVar2Name
private boolean executeNestedContent(freemarker.core.Environment, freemarker.core.TemplateElement[]);
descriptor: (Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.this$0:Lfreemarker/core/IteratorBlock;
getfield freemarker.core.IteratorBlock.hashListing:Z
ifne 2
1: aload 0
aload 1
aload 2
invokevirtual freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing:(Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
goto 3
2: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual freemarker.core.IteratorBlock$IterationContext.executedNestedContentForHashListing:(Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
3: StackMap locals:
StackMap stack: int
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 4 1 env Lfreemarker/core/Environment;
0 4 2 childBuffer [Lfreemarker/core/TemplateElement;
Exceptions:
throws freemarker.template.TemplateModelException, freemarker.template.TemplateException, java.io.IOException, freemarker.core.NonSequenceOrCollectionException, freemarker.core.InvalidReferenceException
MethodParameters:
Name Flags
env
childBuffer
private boolean executedNestedContentForCollOrSeqListing(freemarker.core.Environment, freemarker.core.TemplateElement[]);
descriptor: (Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=13, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateCollectionModel
ifeq 22
1: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateCollectionModel
astore 4
start local 4 2: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
ifnonnull 3
aload 4
invokeinterface freemarker.template.TemplateCollectionModel.iterator:()Lfreemarker/template/TemplateModelIterator;
goto 4
3: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] top freemarker.template.TemplateCollectionModel
StackMap stack:
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
checkcast freemarker.template.TemplateModelIterator
4: StackMap locals:
StackMap stack: freemarker.template.TemplateModelIterator
astore 5
start local 5 5: aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
istore 3
start local 3 6: iload 3
ifeq 66
7: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
ifnull 19
8: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateCollectionModel freemarker.template.TemplateModelIterator
StackMap stack:
aload 0
aload 5
invokeinterface freemarker.template.TemplateModelIterator.next:()Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
9: aload 0
aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
putfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
10: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
11: goto 15
StackMap locals:
StackMap stack: freemarker.core.BreakOrContinueException
12: astore 6
start local 6 13: aload 6
getstatic freemarker.core.BreakOrContinueException.BREAK_INSTANCE:Lfreemarker/core/BreakOrContinueException;
if_acmpne 15
14: goto 17
end local 6 15: StackMap locals:
StackMap stack:
aload 0
dup
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iconst_1
iadd
putfield freemarker.core.IteratorBlock$IterationContext.index:I
16: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
ifne 8
17: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
18: goto 66
19: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
20: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
end local 5 end local 4 21: goto 66
end local 3 StackMap locals:
StackMap stack:
22: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateSequenceModel
ifeq 45
23: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateSequenceModel
astore 4
start local 4 24: aload 4
invokeinterface freemarker.template.TemplateSequenceModel.size:()I
istore 5
start local 5 25: iload 5
ifeq 26
iconst_1
goto 27
StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] top freemarker.template.TemplateSequenceModel int
StackMap stack:
26: iconst_0
StackMap locals:
StackMap stack: int
27: istore 3
start local 3 28: iload 3
ifeq 66
29: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
ifnull 43
30: aload 0
iconst_0
putfield freemarker.core.IteratorBlock$IterationContext.index:I
goto 41
31: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateSequenceModel int
StackMap stack:
aload 0
aload 4
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.index:I
invokeinterface freemarker.template.TemplateSequenceModel.get:(I)Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
32: aload 0
iload 5
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iconst_1
iadd
if_icmple 33
iconst_1
goto 34
StackMap locals:
StackMap stack: freemarker.core.IteratorBlock$IterationContext
33: iconst_0
StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateSequenceModel int
StackMap stack: freemarker.core.IteratorBlock$IterationContext int
34: putfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
35: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
36: goto 40
StackMap locals:
StackMap stack: freemarker.core.BreakOrContinueException
37: astore 6
start local 6 38: aload 6
getstatic freemarker.core.BreakOrContinueException.BREAK_INSTANCE:Lfreemarker/core/BreakOrContinueException;
if_acmpne 40
39: goto 66
end local 6 40: StackMap locals:
StackMap stack:
aload 0
dup
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iconst_1
iadd
putfield freemarker.core.IteratorBlock$IterationContext.index:I
StackMap locals:
StackMap stack:
41: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iload 5
if_icmplt 31
42: goto 66
43: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
end local 5 end local 4 44: goto 66
end local 3 StackMap locals:
StackMap stack:
45: aload 1
invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
ifeq 54
46: iconst_1
istore 3
start local 3 47: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
ifnull 50
48: aload 0
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
49: aload 0
iconst_0
putfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
50: StackMap locals: int
StackMap stack:
aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
51: goto 66
StackMap locals:
StackMap stack: freemarker.core.BreakOrContinueException
52: pop
53: goto 66
end local 3 StackMap locals:
StackMap stack:
54: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateHashModelEx
ifeq 63
55: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
invokestatic freemarker.core.NonSequenceOrCollectionException.isWrappedIterable:(Lfreemarker/template/TemplateModel;)Z
ifne 63
56: new freemarker.core.NonSequenceOrCollectionException
dup
aload 1
57: new freemarker.core._ErrorDescriptionBuilder
dup
iconst_5
anewarray java.lang.Object
dup
iconst_0
ldc "The value you try to list is "
aastore
dup
iconst_1
58: new freemarker.core._DelayedAOrAn
dup
new freemarker.core._DelayedFTLTypeDescription
dup
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
59: ldc ", thus you must specify two loop variables after the \"as\"; one for the key, and another for the value, like "
aastore
dup
iconst_3
60: ldc "<#... as k, v>"
aastore
dup
iconst_4
ldc ")."
61: aastore
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
62: invokespecial freemarker.core.NonSequenceOrCollectionException.<init>:(Lfreemarker/core/Environment;Lfreemarker/core/_ErrorDescriptionBuilder;)V
athrow
63: StackMap locals:
StackMap stack:
new freemarker.core.NonSequenceOrCollectionException
dup
64: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.this$0:Lfreemarker/core/IteratorBlock;
getfield freemarker.core.IteratorBlock.listedExp:Lfreemarker/core/Expression;
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
aload 1
65: invokespecial freemarker.core.NonSequenceOrCollectionException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
athrow
start local 3 66: StackMap locals: int
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 67 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 67 1 env Lfreemarker/core/Environment;
0 67 2 childBuffer [Lfreemarker/core/TemplateElement;
6 22 3 listNotEmpty Z
28 45 3 listNotEmpty Z
47 54 3 listNotEmpty Z
66 67 3 listNotEmpty Z
2 21 4 collModel Lfreemarker/template/TemplateCollectionModel;
5 21 5 iterModel Lfreemarker/template/TemplateModelIterator;
13 15 6 br Lfreemarker/core/BreakOrContinueException;
24 44 4 seqModel Lfreemarker/template/TemplateSequenceModel;
25 44 5 size I
38 40 6 br Lfreemarker/core/BreakOrContinueException;
Exception table:
from to target type
10 11 12 Class freemarker.core.BreakOrContinueException
35 36 37 Class freemarker.core.BreakOrContinueException
50 51 52 Class freemarker.core.BreakOrContinueException
Exceptions:
throws freemarker.template.TemplateModelException, java.io.IOException, freemarker.template.TemplateException, freemarker.core.NonSequenceOrCollectionException, freemarker.core.InvalidReferenceException
MethodParameters:
Name Flags
env
childBuffer
private boolean executedNestedContentForHashListing(freemarker.core.Environment, freemarker.core.TemplateElement[]);
descriptor: (Lfreemarker/core/Environment;[Lfreemarker/core/TemplateElement;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=13, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateHashModelEx
ifeq 45
1: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateHashModelEx
astore 4
start local 4 2: aload 4
instanceof freemarker.template.TemplateHashModelEx2
ifeq 25
3: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
ifnonnull 4
aload 4
checkcast freemarker.template.TemplateHashModelEx2
invokeinterface freemarker.template.TemplateHashModelEx2.keyValuePairIterator:()Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
goto 5
4: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] top freemarker.template.TemplateHashModelEx
StackMap stack:
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
checkcast freemarker.template.TemplateHashModelEx2$KeyValuePairIterator
5: StackMap locals:
StackMap stack: freemarker.template.TemplateHashModelEx2$KeyValuePairIterator
astore 5
start local 5 6: aload 5
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.hasNext:()Z
istore 3
start local 3 7: iload 3
ifeq 56
8: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
ifnull 22
9: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateHashModelEx freemarker.template.TemplateHashModelEx2$KeyValuePairIterator
StackMap stack:
aload 5
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.next:()Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
astore 6
start local 6 10: aload 0
aload 6
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getKey:()Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
11: aload 0
aload 6
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getValue:()Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2:Lfreemarker/template/TemplateModel;
12: aload 0
aload 5
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.hasNext:()Z
putfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
13: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
14: goto 18
StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateHashModelEx freemarker.template.TemplateHashModelEx2$KeyValuePairIterator freemarker.template.TemplateHashModelEx2$KeyValuePair
StackMap stack: freemarker.core.BreakOrContinueException
15: astore 7
start local 7 16: aload 7
getstatic freemarker.core.BreakOrContinueException.BREAK_INSTANCE:Lfreemarker/core/BreakOrContinueException;
if_acmpne 18
17: goto 20
end local 7 18: StackMap locals:
StackMap stack:
aload 0
dup
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iconst_1
iadd
putfield freemarker.core.IteratorBlock$IterationContext.index:I
end local 6 19: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
ifne 9
20: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
21: goto 56
22: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield freemarker.core.IteratorBlock$IterationContext.openedIterator:Ljava/lang/Object;
23: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
end local 5 24: goto 56
end local 3 25: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] top freemarker.template.TemplateHashModelEx
StackMap stack:
aload 4
invokeinterface freemarker.template.TemplateHashModelEx.keys:()Lfreemarker/template/TemplateCollectionModel;
invokeinterface freemarker.template.TemplateCollectionModel.iterator:()Lfreemarker/template/TemplateModelIterator;
astore 5
start local 5 26: aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
istore 3
start local 3 27: iload 3
ifeq 56
28: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
ifnull 43
29: StackMap locals: freemarker.core.IteratorBlock$IterationContext freemarker.core.Environment freemarker.core.TemplateElement[] int freemarker.template.TemplateHashModelEx freemarker.template.TemplateModelIterator
StackMap stack:
aload 0
aload 5
invokeinterface freemarker.template.TemplateModelIterator.next:()Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
30: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateScalarModel
ifne 33
31: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateHashModelEx
32: invokestatic freemarker.core._MessageUtil.newKeyValuePairListingNonStringKeyExceptionMessage:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateHashModelEx;)Lfreemarker/template/TemplateModelException;
athrow
33: StackMap locals:
StackMap stack:
aload 0
aload 4
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateScalarModel
invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
invokeinterface freemarker.template.TemplateHashModelEx.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
putfield freemarker.core.IteratorBlock$IterationContext.loopVar2:Lfreemarker/template/TemplateModel;
34: aload 0
aload 5
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
putfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
35: aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
36: goto 40
StackMap locals:
StackMap stack: freemarker.core.BreakOrContinueException
37: astore 6
start local 6 38: aload 6
getstatic freemarker.core.BreakOrContinueException.BREAK_INSTANCE:Lfreemarker/core/BreakOrContinueException;
if_acmpne 40
39: goto 56
end local 6 40: StackMap locals:
StackMap stack:
aload 0
dup
getfield freemarker.core.IteratorBlock$IterationContext.index:I
iconst_1
iadd
putfield freemarker.core.IteratorBlock$IterationContext.index:I
41: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
ifne 29
42: goto 56
43: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual freemarker.core.Environment.visit:([Lfreemarker/core/TemplateElement;)V
end local 5 end local 4 44: goto 56
end local 3 StackMap locals:
StackMap stack:
45: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateCollectionModel
ifne 47
46: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
instanceof freemarker.template.TemplateSequenceModel
ifeq 53
47: StackMap locals:
StackMap stack:
new freemarker.core.NonSequenceOrCollectionException
dup
aload 1
48: new freemarker.core._ErrorDescriptionBuilder
dup
iconst_3
anewarray java.lang.Object
dup
iconst_0
ldc "The value you try to list is "
aastore
dup
iconst_1
49: new freemarker.core._DelayedAOrAn
dup
new freemarker.core._DelayedFTLTypeDescription
dup
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
50: ldc ", thus you must specify only one loop variable after the \"as\" (there's no separate key and value)."
51: aastore
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
52: invokespecial freemarker.core.NonSequenceOrCollectionException.<init>:(Lfreemarker/core/Environment;Lfreemarker/core/_ErrorDescriptionBuilder;)V
athrow
53: StackMap locals:
StackMap stack:
new freemarker.core.NonExtendedHashException
dup
54: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.this$0:Lfreemarker/core/IteratorBlock;
getfield freemarker.core.IteratorBlock.listedExp:Lfreemarker/core/Expression;
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.listedValue:Lfreemarker/template/TemplateModel;
aload 1
55: invokespecial freemarker.core.NonExtendedHashException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
athrow
start local 3 56: StackMap locals: int
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 57 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 57 1 env Lfreemarker/core/Environment;
0 57 2 childBuffer [Lfreemarker/core/TemplateElement;
7 25 3 hashNotEmpty Z
27 45 3 hashNotEmpty Z
56 57 3 hashNotEmpty Z
2 44 4 listedHash Lfreemarker/template/TemplateHashModelEx;
6 24 5 kvpIter Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
10 19 6 kvp Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
16 18 7 br Lfreemarker/core/BreakOrContinueException;
26 44 5 keysIter Lfreemarker/template/TemplateModelIterator;
38 40 6 br Lfreemarker/core/BreakOrContinueException;
Exception table:
from to target type
13 14 15 Class freemarker.core.BreakOrContinueException
35 36 37 Class freemarker.core.BreakOrContinueException
Exceptions:
throws freemarker.template.TemplateModelException, java.io.IOException, freemarker.template.TemplateException
MethodParameters:
Name Flags
env
childBuffer
java.lang.String getLoopVariableName();
descriptor: ()Ljava/lang/String;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/IteratorBlock$IterationContext;
java.lang.String getLoopVariable2Name();
descriptor: ()Ljava/lang/String;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/IteratorBlock$IterationContext;
public freemarker.template.TemplateModel getLocalVariable(java.lang.String);
descriptor: (Ljava/lang/String;)Lfreemarker/template/TemplateModel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
astore 2
start local 2 1: aload 2
ifnull 10
aload 1
aload 2
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 10
2: aload 1
invokevirtual java.lang.String.length:()I
aload 2
invokevirtual java.lang.String.length:()I
isub
lookupswitch { // 3
0: 3
6: 4
9: 6
default: 10
}
3: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar:Lfreemarker/template/TemplateModel;
areturn
4: StackMap locals:
StackMap stack:
aload 1
ldc "_index"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 10
5: new freemarker.template.SimpleNumber
dup
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.index:I
invokespecial freemarker.template.SimpleNumber.<init>:(I)V
areturn
6: StackMap locals:
StackMap stack:
aload 1
ldc "_has_next"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 10
7: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
ifeq 8
getstatic freemarker.template.TemplateBooleanModel.TRUE:Lfreemarker/template/TemplateBooleanModel;
goto 9
StackMap locals:
StackMap stack:
8: getstatic freemarker.template.TemplateBooleanModel.FALSE:Lfreemarker/template/TemplateBooleanModel;
StackMap locals:
StackMap stack: freemarker.template.TemplateBooleanModel
9: areturn
10: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar2Name:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
11: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVar2:Lfreemarker/template/TemplateModel;
areturn
12: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lfreemarker/core/IteratorBlock$IterationContext;
0 13 1 name Ljava/lang/String;
1 13 2 loopVariableName Ljava/lang/String;
MethodParameters:
Name Flags
name
public java.util.Collection getLocalVariableNames();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.loopVarName:Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnull 8
2: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
ifnonnull 7
3: aload 0
new java.util.ArrayList
dup
iconst_3
invokespecial java.util.ArrayList.<init>:(I)V
putfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
4: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
aload 1
invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
pop
5: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "_index"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
pop
6: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "_has_next"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
pop
7: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield freemarker.core.IteratorBlock$IterationContext.localVarNames:Ljava/util/Collection;
areturn
8: StackMap locals:
StackMap stack:
getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lfreemarker/core/IteratorBlock$IterationContext;
1 9 1 loopVariableName Ljava/lang/String;
boolean hasNext();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.hasNext:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/IteratorBlock$IterationContext;
int getIndex();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.IteratorBlock$IterationContext.index:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/IteratorBlock$IterationContext;
}
SourceFile: "IteratorBlock.java"
NestHost: freemarker.core.IteratorBlock
InnerClasses:
IterationContext = freemarker.core.IteratorBlock$IterationContext of freemarker.core.IteratorBlock
public abstract KeyValuePair = freemarker.template.TemplateHashModelEx2$KeyValuePair of freemarker.template.TemplateHashModelEx2
public abstract KeyValuePairIterator = freemarker.template.TemplateHashModelEx2$KeyValuePairIterator of freemarker.template.TemplateHashModelEx2