final class freemarker.core.AddConcatExpression extends freemarker.core.Expression
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: freemarker.core.AddConcatExpression
super_class: freemarker.core.Expression
{
private final freemarker.core.Expression left;
descriptor: Lfreemarker/core/Expression;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final freemarker.core.Expression right;
descriptor: Lfreemarker/core/Expression;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(freemarker.core.Expression, freemarker.core.Expression);
descriptor: (Lfreemarker/core/Expression;Lfreemarker/core/Expression;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial freemarker.core.Expression.<init>:()V
1: aload 0
aload 1
putfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
2: aload 0
aload 2
putfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lfreemarker/core/AddConcatExpression;
0 4 1 left Lfreemarker/core/Expression;
0 4 2 right Lfreemarker/core/Expression;
MethodParameters:
Name Flags
left
right
freemarker.template.TemplateModel _eval(freemarker.core.Environment);
descriptor: (Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
flags: (0x0000)
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
aload 1
invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
aload 1
invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
invokestatic freemarker.core.AddConcatExpression._eval:(Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/AddConcatExpression;
0 1 1 env Lfreemarker/core/Environment;
Exceptions:
throws freemarker.template.TemplateException
MethodParameters:
Name Flags
env
static freemarker.template.TemplateModel _eval(freemarker.core.Environment, freemarker.core.TemplateObject, freemarker.core.Expression, freemarker.template.TemplateModel, freemarker.core.Expression, freemarker.template.TemplateModel);
descriptor: (Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 3
instanceof freemarker.template.TemplateNumberModel
ifeq 4
aload 5
instanceof freemarker.template.TemplateNumberModel
ifeq 4
1: aload 3
checkcast freemarker.template.TemplateNumberModel
aload 2
invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
astore 6
start local 6 2: aload 5
checkcast freemarker.template.TemplateNumberModel
aload 4
invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
astore 7
start local 7 3: aload 0
aload 1
aload 6
aload 7
invokestatic freemarker.core.AddConcatExpression._evalOnNumbers:(Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Ljava/lang/Number;Ljava/lang/Number;)Lfreemarker/template/TemplateModel;
areturn
end local 7 end local 6 4: StackMap locals:
StackMap stack:
aload 3
instanceof freemarker.template.TemplateSequenceModel
ifeq 6
aload 5
instanceof freemarker.template.TemplateSequenceModel
ifeq 6
5: new freemarker.core.AddConcatExpression$ConcatenatedSequence
dup
aload 3
checkcast freemarker.template.TemplateSequenceModel
aload 5
checkcast freemarker.template.TemplateSequenceModel
invokespecial freemarker.core.AddConcatExpression$ConcatenatedSequence.<init>:(Lfreemarker/template/TemplateSequenceModel;Lfreemarker/template/TemplateSequenceModel;)V
areturn
6: StackMap locals:
StackMap stack:
aload 3
instanceof freemarker.template.TemplateHashModel
ifeq 8
aload 5
instanceof freemarker.template.TemplateHashModel
ifeq 8
7: iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: istore 6
start local 6 10: aload 3
aload 2
iload 6
aconst_null
11: aload 0
12: invokestatic freemarker.core.EvalUtil.coerceModelToStringOrMarkup:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
astore 7
start local 7 13: aload 7
ifnonnull 16
14: aload 3
aload 5
invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
15: areturn
16: StackMap locals: int java.lang.Object
StackMap stack:
aload 5
aload 4
iload 6
aconst_null
17: aload 0
18: invokestatic freemarker.core.EvalUtil.coerceModelToStringOrMarkup:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
astore 8
start local 8 19: aload 8
ifnonnull 22
20: aload 3
aload 5
invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
21: areturn
22: StackMap locals: java.lang.Object
StackMap stack:
aload 7
instanceof java.lang.String
ifeq 32
23: aload 8
instanceof java.lang.String
ifeq 26
24: new freemarker.template.SimpleScalar
dup
aload 7
checkcast java.lang.String
aload 8
checkcast java.lang.String
invokevirtual java.lang.String.concat:(Ljava/lang/String;)Ljava/lang/String;
invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
25: areturn
26: StackMap locals:
StackMap stack:
aload 8
checkcast freemarker.core.TemplateMarkupOutputModel
astore 9
start local 9 27: aload 1
28: aload 9
invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
aload 7
checkcast java.lang.String
invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
29: aload 9
30: invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
31: areturn
end local 9 32: StackMap locals:
StackMap stack:
aload 7
checkcast freemarker.core.TemplateMarkupOutputModel
astore 9
start local 9 33: aload 8
instanceof java.lang.String
ifeq 39
34: aload 1
35: aload 9
36: aload 9
invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
aload 8
checkcast java.lang.String
invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
37: invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
38: areturn
39: StackMap locals: freemarker.core.TemplateMarkupOutputModel
StackMap stack:
aload 1
40: aload 9
41: aload 8
checkcast freemarker.core.TemplateMarkupOutputModel
42: invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
43: areturn
end local 9 end local 8 end local 7 44: StackMap locals: freemarker.core.Environment freemarker.core.TemplateObject freemarker.core.Expression freemarker.template.TemplateModel freemarker.core.Expression freemarker.template.TemplateModel int
StackMap stack: freemarker.core.NonStringOrTemplateOutputException
astore 7
start local 7 45: iload 6
ifeq 47
46: aload 3
aload 5
invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
areturn
47: StackMap locals: freemarker.core.NonStringOrTemplateOutputException
StackMap stack:
aload 7
athrow
end local 7 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 48 0 env Lfreemarker/core/Environment;
0 48 1 parent Lfreemarker/core/TemplateObject;
0 48 2 leftExp Lfreemarker/core/Expression;
0 48 3 leftModel Lfreemarker/template/TemplateModel;
0 48 4 rightExp Lfreemarker/core/Expression;
0 48 5 rightModel Lfreemarker/template/TemplateModel;
2 4 6 first Ljava/lang/Number;
3 4 7 second Ljava/lang/Number;
10 48 6 hashConcatPossible Z
13 44 7 leftOMOrStr Ljava/lang/Object;
19 44 8 rightOMOrStr Ljava/lang/Object;
27 32 9 rightMO Lfreemarker/core/TemplateMarkupOutputModel<*>;
33 44 9 leftMO Lfreemarker/core/TemplateMarkupOutputModel<*>;
45 48 7 e Lfreemarker/core/NonStringOrTemplateOutputException;
Exception table:
from to target type
10 15 44 Class freemarker.core.NonStringOrTemplateOutputException
16 21 44 Class freemarker.core.NonStringOrTemplateOutputException
22 25 44 Class freemarker.core.NonStringOrTemplateOutputException
26 31 44 Class freemarker.core.NonStringOrTemplateOutputException
32 38 44 Class freemarker.core.NonStringOrTemplateOutputException
39 43 44 Class freemarker.core.NonStringOrTemplateOutputException
Exceptions:
throws freemarker.template.TemplateModelException, freemarker.template.TemplateException, freemarker.core.NonStringException
MethodParameters:
Name Flags
env
parent
leftExp
leftModel
rightExp
rightModel
private static freemarker.template.TemplateModel _eval_concatenateHashes(freemarker.template.TemplateModel, freemarker.template.TemplateModel);
descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
instanceof freemarker.template.TemplateHashModelEx
ifeq 8
aload 1
instanceof freemarker.template.TemplateHashModelEx
ifeq 8
1: aload 0
checkcast freemarker.template.TemplateHashModelEx
astore 2
start local 2 2: aload 1
checkcast freemarker.template.TemplateHashModelEx
astore 3
start local 3 3: aload 2
invokeinterface freemarker.template.TemplateHashModelEx.size:()I
ifne 5
4: aload 3
areturn
5: StackMap locals: freemarker.template.TemplateHashModelEx freemarker.template.TemplateHashModelEx
StackMap stack:
aload 3
invokeinterface freemarker.template.TemplateHashModelEx.size:()I
ifne 7
6: aload 2
areturn
7: StackMap locals:
StackMap stack:
new freemarker.core.AddConcatExpression$ConcatenatedHashEx
dup
aload 2
aload 3
invokespecial freemarker.core.AddConcatExpression$ConcatenatedHashEx.<init>:(Lfreemarker/template/TemplateHashModelEx;Lfreemarker/template/TemplateHashModelEx;)V
areturn
end local 3 end local 2 8: StackMap locals:
StackMap stack:
new freemarker.core.AddConcatExpression$ConcatenatedHash
dup
aload 0
checkcast freemarker.template.TemplateHashModel
9: aload 1
checkcast freemarker.template.TemplateHashModel
10: invokespecial freemarker.core.AddConcatExpression$ConcatenatedHash.<init>:(Lfreemarker/template/TemplateHashModel;Lfreemarker/template/TemplateHashModel;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 leftModel Lfreemarker/template/TemplateModel;
0 11 1 rightModel Lfreemarker/template/TemplateModel;
2 8 2 leftModelEx Lfreemarker/template/TemplateHashModelEx;
3 8 3 rightModelEx Lfreemarker/template/TemplateHashModelEx;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
leftModel
rightModel
static freemarker.template.TemplateModel _evalOnNumbers(freemarker.core.Environment, freemarker.core.TemplateObject, java.lang.Number, java.lang.Number);
descriptor: (Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Ljava/lang/Number;Ljava/lang/Number;)Lfreemarker/template/TemplateModel;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokestatic freemarker.core.EvalUtil.getArithmeticEngine:(Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;)Lfreemarker/core/ArithmeticEngine;
astore 4
start local 4 1: new freemarker.template.SimpleNumber
dup
aload 4
aload 2
aload 3
invokevirtual freemarker.core.ArithmeticEngine.add:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
invokespecial freemarker.template.SimpleNumber.<init>:(Ljava/lang/Number;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 env Lfreemarker/core/Environment;
0 2 1 parent Lfreemarker/core/TemplateObject;
0 2 2 first Ljava/lang/Number;
0 2 3 second Ljava/lang/Number;
1 2 4 ae Lfreemarker/core/ArithmeticEngine;
Exceptions:
throws freemarker.template.TemplateException
MethodParameters:
Name Flags
env
parent
first
second
boolean isLiteral();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.AddConcatExpression.constantValue:Lfreemarker/template/TemplateModel;
ifnonnull 2
aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
invokevirtual freemarker.core.Expression.isLiteral:()Z
ifeq 1
aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
invokevirtual freemarker.core.Expression.isLiteral:()Z
ifne 2
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
StackMap locals:
StackMap stack:
2: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lfreemarker/core/AddConcatExpression;
protected freemarker.core.Expression deepCloneWithIdentifierReplaced_inner(java.lang.String, freemarker.core.Expression, freemarker.core.Expression$ReplacemenetState);
descriptor: (Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new freemarker.core.AddConcatExpression
dup
1: aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
aload 1
aload 2
aload 3
invokevirtual freemarker.core.Expression.deepCloneWithIdentifierReplaced:(Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
2: aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
aload 1
aload 2
aload 3
invokevirtual freemarker.core.Expression.deepCloneWithIdentifierReplaced:(Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
3: invokespecial freemarker.core.AddConcatExpression.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Expression;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lfreemarker/core/AddConcatExpression;
0 4 1 replacedIdentifier Ljava/lang/String;
0 4 2 replacement Lfreemarker/core/Expression;
0 4 3 replacementState Lfreemarker/core/Expression$ReplacemenetState;
MethodParameters:
Name Flags
replacedIdentifier
replacement
replacementState
public java.lang.String getCanonicalForm();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
invokevirtual freemarker.core.Expression.getCanonicalForm:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " + "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
invokevirtual freemarker.core.Expression.getCanonicalForm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/AddConcatExpression;
java.lang.String getNodeTypeSymbol();
descriptor: ()Ljava/lang/String;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "+"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/AddConcatExpression;
int getParameterCount();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_2
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/AddConcatExpression;
java.lang.Object getParameterValue(int);
descriptor: (I)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifne 1
aload 0
getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
StackMap locals:
StackMap stack: freemarker.core.Expression
2: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lfreemarker/core/AddConcatExpression;
0 3 1 idx I
MethodParameters:
Name Flags
idx
freemarker.core.ParameterRole getParameterRole(int);
descriptor: (I)Lfreemarker/core/ParameterRole;
flags: (0x0000)
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iload 1
invokestatic freemarker.core.ParameterRole.forBinaryOperatorOperand:(I)Lfreemarker/core/ParameterRole;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/AddConcatExpression;
0 1 1 idx I
MethodParameters:
Name Flags
idx
}
SourceFile: "AddConcatExpression.java"
NestMembers:
freemarker.core.AddConcatExpression$ConcatenatedHash freemarker.core.AddConcatExpression$ConcatenatedHashEx freemarker.core.AddConcatExpression$ConcatenatedSequence
InnerClasses:
private ConcatenatedHash = freemarker.core.AddConcatExpression$ConcatenatedHash of freemarker.core.AddConcatExpression
private final ConcatenatedHashEx = freemarker.core.AddConcatExpression$ConcatenatedHashEx of freemarker.core.AddConcatExpression
private final ConcatenatedSequence = freemarker.core.AddConcatExpression$ConcatenatedSequence of freemarker.core.AddConcatExpression
ReplacemenetState = freemarker.core.Expression$ReplacemenetState of freemarker.core.Expression