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 // freemarker.core.AddConcatExpression this
        start local 1 // freemarker.core.Expression left
        start local 2 // freemarker.core.Expression right
         0: .line 49
            aload 0 /* this */
            invokespecial freemarker.core.Expression.<init>:()V
         1: .line 50
            aload 0 /* this */
            aload 1 /* left */
            putfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
         2: .line 51
            aload 0 /* this */
            aload 2 /* right */
            putfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
         3: .line 52
            return
        end local 2 // freemarker.core.Expression right
        end local 1 // freemarker.core.Expression left
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
        start local 1 // freemarker.core.Environment env
         0: .line 56
            aload 1 /* env */
            aload 0 /* this */
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
            aload 1 /* env */
            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 // freemarker.core.Environment env
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.Environment env
        start local 1 // freemarker.core.TemplateObject parent
        start local 2 // freemarker.core.Expression leftExp
        start local 3 // freemarker.template.TemplateModel leftModel
        start local 4 // freemarker.core.Expression rightExp
        start local 5 // freemarker.template.TemplateModel rightModel
         0: .line 70
            aload 3 /* leftModel */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 4
            aload 5 /* rightModel */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 4
         1: .line 71
            aload 3 /* leftModel */
            checkcast freemarker.template.TemplateNumberModel
            aload 2 /* leftExp */
            invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
            astore 6 /* first */
        start local 6 // java.lang.Number first
         2: .line 72
            aload 5 /* rightModel */
            checkcast freemarker.template.TemplateNumberModel
            aload 4 /* rightExp */
            invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
            astore 7 /* second */
        start local 7 // java.lang.Number second
         3: .line 73
            aload 0 /* env */
            aload 1 /* parent */
            aload 6 /* first */
            aload 7 /* second */
            invokestatic freemarker.core.AddConcatExpression._evalOnNumbers:(Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Ljava/lang/Number;Ljava/lang/Number;)Lfreemarker/template/TemplateModel;
            areturn
        end local 7 // java.lang.Number second
        end local 6 // java.lang.Number first
         4: .line 74
      StackMap locals:
      StackMap stack:
            aload 3 /* leftModel */
            instanceof freemarker.template.TemplateSequenceModel
            ifeq 6
            aload 5 /* rightModel */
            instanceof freemarker.template.TemplateSequenceModel
            ifeq 6
         5: .line 75
            new freemarker.core.AddConcatExpression$ConcatenatedSequence
            dup
            aload 3 /* leftModel */
            checkcast freemarker.template.TemplateSequenceModel
            aload 5 /* rightModel */
            checkcast freemarker.template.TemplateSequenceModel
            invokespecial freemarker.core.AddConcatExpression$ConcatenatedSequence.<init>:(Lfreemarker/template/TemplateSequenceModel;Lfreemarker/template/TemplateSequenceModel;)V
            areturn
         6: .line 78
      StackMap locals:
      StackMap stack:
            aload 3 /* leftModel */
            instanceof freemarker.template.TemplateHashModel
            ifeq 8
            aload 5 /* rightModel */
            instanceof freemarker.template.TemplateHashModel
            ifeq 8
         7: .line 77
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: istore 6 /* hashConcatPossible */
        start local 6 // boolean hashConcatPossible
        10: .line 84
            aload 3 /* leftModel */
            aload 2 /* leftExp */
            iload 6 /* hashConcatPossible */
            aconst_null
        11: .line 85
            aload 0 /* env */
        12: .line 83
            invokestatic freemarker.core.EvalUtil.coerceModelToStringOrMarkup:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
            astore 7 /* leftOMOrStr */
        start local 7 // java.lang.Object leftOMOrStr
        13: .line 86
            aload 7 /* leftOMOrStr */
            ifnonnull 16
        14: .line 87
            aload 3 /* leftModel */
            aload 5 /* rightModel */
            invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
        15: areturn
        16: .line 92
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 5 /* rightModel */
            aload 4 /* rightExp */
            iload 6 /* hashConcatPossible */
            aconst_null
        17: .line 93
            aload 0 /* env */
        18: .line 91
            invokestatic freemarker.core.EvalUtil.coerceModelToStringOrMarkup:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
            astore 8 /* rightOMOrStr */
        start local 8 // java.lang.Object rightOMOrStr
        19: .line 94
            aload 8 /* rightOMOrStr */
            ifnonnull 22
        20: .line 95
            aload 3 /* leftModel */
            aload 5 /* rightModel */
            invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
        21: areturn
        22: .line 98
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 7 /* leftOMOrStr */
            instanceof java.lang.String
            ifeq 32
        23: .line 99
            aload 8 /* rightOMOrStr */
            instanceof java.lang.String
            ifeq 26
        24: .line 100
            new freemarker.template.SimpleScalar
            dup
            aload 7 /* leftOMOrStr */
            checkcast java.lang.String
            aload 8 /* rightOMOrStr */
            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: .line 102
      StackMap locals:
      StackMap stack:
            aload 8 /* rightOMOrStr */
            checkcast freemarker.core.TemplateMarkupOutputModel
            astore 9 /* rightMO */
        start local 9 // freemarker.core.TemplateMarkupOutputModel rightMO
        27: .line 103
            aload 1 /* parent */
        28: .line 104
            aload 9 /* rightMO */
            invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
            aload 7 /* leftOMOrStr */
            checkcast java.lang.String
            invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
        29: .line 105
            aload 9 /* rightMO */
        30: .line 103
            invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
        31: areturn
        end local 9 // freemarker.core.TemplateMarkupOutputModel rightMO
        32: .line 108
      StackMap locals:
      StackMap stack:
            aload 7 /* leftOMOrStr */
            checkcast freemarker.core.TemplateMarkupOutputModel
            astore 9 /* leftMO */
        start local 9 // freemarker.core.TemplateMarkupOutputModel leftMO
        33: .line 109
            aload 8 /* rightOMOrStr */
            instanceof java.lang.String
            ifeq 39
        34: .line 110
            aload 1 /* parent */
        35: .line 111
            aload 9 /* leftMO */
        36: .line 112
            aload 9 /* leftMO */
            invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
            aload 8 /* rightOMOrStr */
            checkcast java.lang.String
            invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
        37: .line 110
            invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
        38: areturn
        39: .line 114
      StackMap locals: freemarker.core.TemplateMarkupOutputModel
      StackMap stack:
            aload 1 /* parent */
        40: .line 115
            aload 9 /* leftMO */
        41: .line 116
            aload 8 /* rightOMOrStr */
            checkcast freemarker.core.TemplateMarkupOutputModel
        42: .line 114
            invokestatic freemarker.core.EvalUtil.concatMarkupOutputs:(Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
        43: areturn
        end local 9 // freemarker.core.TemplateMarkupOutputModel leftMO
        end local 8 // java.lang.Object rightOMOrStr
        end local 7 // java.lang.Object leftOMOrStr
        44: .line 119
      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 /* e */
        start local 7 // freemarker.core.NonStringOrTemplateOutputException e
        45: .line 122
            iload 6 /* hashConcatPossible */
            ifeq 47
        46: .line 123
            aload 3 /* leftModel */
            aload 5 /* rightModel */
            invokestatic freemarker.core.AddConcatExpression._eval_concatenateHashes:(Lfreemarker/template/TemplateModel;Lfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModel;
            areturn
        47: .line 125
      StackMap locals: freemarker.core.NonStringOrTemplateOutputException
      StackMap stack:
            aload 7 /* e */
            athrow
        end local 7 // freemarker.core.NonStringOrTemplateOutputException e
        end local 6 // boolean hashConcatPossible
        end local 5 // freemarker.template.TemplateModel rightModel
        end local 4 // freemarker.core.Expression rightExp
        end local 3 // freemarker.template.TemplateModel leftModel
        end local 2 // freemarker.core.Expression leftExp
        end local 1 // freemarker.core.TemplateObject parent
        end local 0 // freemarker.core.Environment env
      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 // freemarker.template.TemplateModel leftModel
        start local 1 // freemarker.template.TemplateModel rightModel
         0: .line 133
            aload 0 /* leftModel */
            instanceof freemarker.template.TemplateHashModelEx
            ifeq 8
            aload 1 /* rightModel */
            instanceof freemarker.template.TemplateHashModelEx
            ifeq 8
         1: .line 134
            aload 0 /* leftModel */
            checkcast freemarker.template.TemplateHashModelEx
            astore 2 /* leftModelEx */
        start local 2 // freemarker.template.TemplateHashModelEx leftModelEx
         2: .line 135
            aload 1 /* rightModel */
            checkcast freemarker.template.TemplateHashModelEx
            astore 3 /* rightModelEx */
        start local 3 // freemarker.template.TemplateHashModelEx rightModelEx
         3: .line 136
            aload 2 /* leftModelEx */
            invokeinterface freemarker.template.TemplateHashModelEx.size:()I
            ifne 5
         4: .line 137
            aload 3 /* rightModelEx */
            areturn
         5: .line 138
      StackMap locals: freemarker.template.TemplateHashModelEx freemarker.template.TemplateHashModelEx
      StackMap stack:
            aload 3 /* rightModelEx */
            invokeinterface freemarker.template.TemplateHashModelEx.size:()I
            ifne 7
         6: .line 139
            aload 2 /* leftModelEx */
            areturn
         7: .line 141
      StackMap locals:
      StackMap stack:
            new freemarker.core.AddConcatExpression$ConcatenatedHashEx
            dup
            aload 2 /* leftModelEx */
            aload 3 /* rightModelEx */
            invokespecial freemarker.core.AddConcatExpression$ConcatenatedHashEx.<init>:(Lfreemarker/template/TemplateHashModelEx;Lfreemarker/template/TemplateHashModelEx;)V
            areturn
        end local 3 // freemarker.template.TemplateHashModelEx rightModelEx
        end local 2 // freemarker.template.TemplateHashModelEx leftModelEx
         8: .line 144
      StackMap locals:
      StackMap stack:
            new freemarker.core.AddConcatExpression$ConcatenatedHash
            dup
            aload 0 /* leftModel */
            checkcast freemarker.template.TemplateHashModel
         9: .line 145
            aload 1 /* rightModel */
            checkcast freemarker.template.TemplateHashModel
        10: .line 144
            invokespecial freemarker.core.AddConcatExpression$ConcatenatedHash.<init>:(Lfreemarker/template/TemplateHashModel;Lfreemarker/template/TemplateHashModel;)V
            areturn
        end local 1 // freemarker.template.TemplateModel rightModel
        end local 0 // freemarker.template.TemplateModel leftModel
      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 // freemarker.core.Environment env
        start local 1 // freemarker.core.TemplateObject parent
        start local 2 // java.lang.Number first
        start local 3 // java.lang.Number second
         0: .line 151
            aload 0 /* env */
            aload 1 /* parent */
            invokestatic freemarker.core.EvalUtil.getArithmeticEngine:(Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;)Lfreemarker/core/ArithmeticEngine;
            astore 4 /* ae */
        start local 4 // freemarker.core.ArithmeticEngine ae
         1: .line 152
            new freemarker.template.SimpleNumber
            dup
            aload 4 /* ae */
            aload 2 /* first */
            aload 3 /* second */
            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 // freemarker.core.ArithmeticEngine ae
        end local 3 // java.lang.Number second
        end local 2 // java.lang.Number first
        end local 1 // freemarker.core.TemplateObject parent
        end local 0 // freemarker.core.Environment env
      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 // freemarker.core.AddConcatExpression this
         0: .line 157
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.constantValue:Lfreemarker/template/TemplateModel;
            ifnonnull 2
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
            invokevirtual freemarker.core.Expression.isLiteral:()Z
            ifeq 1
            aload 0 /* this */
            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 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
        start local 1 // java.lang.String replacedIdentifier
        start local 2 // freemarker.core.Expression replacement
        start local 3 // freemarker.core.Expression$ReplacemenetState replacementState
         0: .line 163
            new freemarker.core.AddConcatExpression
            dup
         1: .line 164
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
            aload 1 /* replacedIdentifier */
            aload 2 /* replacement */
            aload 3 /* replacementState */
            invokevirtual freemarker.core.Expression.deepCloneWithIdentifierReplaced:(Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
         2: .line 165
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
            aload 1 /* replacedIdentifier */
            aload 2 /* replacement */
            aload 3 /* replacementState */
            invokevirtual freemarker.core.Expression.deepCloneWithIdentifierReplaced:(Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
         3: .line 163
            invokespecial freemarker.core.AddConcatExpression.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Expression;)V
            areturn
        end local 3 // freemarker.core.Expression$ReplacemenetState replacementState
        end local 2 // freemarker.core.Expression replacement
        end local 1 // java.lang.String replacedIdentifier
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
         0: .line 170
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            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 /* this */
            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 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
         0: .line 175
            ldc "+"
            areturn
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
         0: .line 180
            iconst_2
            ireturn
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
        start local 1 // int idx
         0: .line 185
            iload 1 /* idx */
            ifne 1
            aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.left:Lfreemarker/core/Expression;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield freemarker.core.AddConcatExpression.right:Lfreemarker/core/Expression;
      StackMap locals:
      StackMap stack: freemarker.core.Expression
         2: areturn
        end local 1 // int idx
        end local 0 // freemarker.core.AddConcatExpression this
      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 // freemarker.core.AddConcatExpression this
        start local 1 // int idx
         0: .line 190
            iload 1 /* idx */
            invokestatic freemarker.core.ParameterRole.forBinaryOperatorOperand:(I)Lfreemarker/core/ParameterRole;
            areturn
        end local 1 // int idx
        end local 0 // freemarker.core.AddConcatExpression this
      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