final class freemarker.core.DynamicKeyName extends freemarker.core.Expression
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: freemarker.core.DynamicKeyName
  super_class: freemarker.core.Expression
{
  private final freemarker.core.Expression keyExpression;
    descriptor: Lfreemarker/core/Expression;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final freemarker.core.Expression target;
    descriptor: Lfreemarker/core/Expression;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static java.lang.Class[] NUMERICAL_KEY_LHO_EXPECTED_TYPES;
    descriptor: [Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 86
            iconst_1
            getstatic freemarker.core.NonStringException.STRING_COERCABLE_TYPES:[Ljava/lang/Class;
            arraylength
            iadd
            anewarray java.lang.Class
            putstatic freemarker.core.DynamicKeyName.NUMERICAL_KEY_LHO_EXPECTED_TYPES:[Ljava/lang/Class;
         1: .line 87
            getstatic freemarker.core.DynamicKeyName.NUMERICAL_KEY_LHO_EXPECTED_TYPES:[Ljava/lang/Class;
            iconst_0
            ldc Lfreemarker/template/TemplateSequenceModel;
            aastore
         2: .line 88
            iconst_0
            istore 0 /* i */
        start local 0 // int i
         3: goto 6
         4: .line 89
      StackMap locals: int
      StackMap stack:
            getstatic freemarker.core.DynamicKeyName.NUMERICAL_KEY_LHO_EXPECTED_TYPES:[Ljava/lang/Class;
            iload 0 /* i */
            iconst_1
            iadd
            getstatic freemarker.core.NonStringException.STRING_COERCABLE_TYPES:[Ljava/lang/Class;
            iload 0 /* i */
            aaload
            aastore
         5: .line 88
            iinc 0 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 0 /* i */
            getstatic freemarker.core.NonStringException.STRING_COERCABLE_TYPES:[Ljava/lang/Class;
            arraylength
            if_icmplt 4
        end local 0 // int i
         7: .line 91
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    7     0     i  I

  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.DynamicKeyName this
        start local 1 // freemarker.core.Expression target
        start local 2 // freemarker.core.Expression keyExpression
         0: .line 45
            aload 0 /* this */
            invokespecial freemarker.core.Expression.<init>:()V
         1: .line 46
            aload 0 /* this */
            aload 1 /* target */
            putfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
         2: .line 47
            aload 0 /* this */
            aload 2 /* keyExpression */
            putfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
         3: .line 48
            return
        end local 2 // freemarker.core.Expression keyExpression
        end local 1 // freemarker.core.Expression target
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lfreemarker/core/DynamicKeyName;
            0    4     1         target  Lfreemarker/core/Expression;
            0    4     2  keyExpression  Lfreemarker/core/Expression;
    MethodParameters:
               Name  Flags
      target         
      keyExpression  

  freemarker.template.TemplateModel _eval(freemarker.core.Environment);
    descriptor: (Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // freemarker.core.DynamicKeyName this
        start local 1 // freemarker.core.Environment env
         0: .line 52
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 2 /* targetModel */
        start local 2 // freemarker.template.TemplateModel targetModel
         1: .line 53
            aload 2 /* targetModel */
            ifnonnull 5
         2: .line 54
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 4
         3: .line 55
            aconst_null
            areturn
         4: .line 57
      StackMap locals: freemarker.template.TemplateModel
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokestatic freemarker.core.InvalidReferenceException.getInstance:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
            athrow
         5: .line 61
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 3 /* keyModel */
        start local 3 // freemarker.template.TemplateModel keyModel
         6: .line 62
            aload 3 /* keyModel */
            ifnonnull 11
         7: .line 63
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 10
         8: .line 64
            getstatic freemarker.template.TemplateScalarModel.EMPTY_STRING:Lfreemarker/template/TemplateModel;
            astore 3 /* keyModel */
         9: .line 65
            goto 11
        10: .line 66
      StackMap locals: freemarker.template.TemplateModel
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            aconst_null
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.assertNonNull:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
        11: .line 69
      StackMap locals:
      StackMap stack:
            aload 3 /* keyModel */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 14
        12: .line 70
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            aload 3 /* keyModel */
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.modelToNumber:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)Ljava/lang/Number;
            invokevirtual java.lang.Number.intValue:()I
            istore 4 /* index */
        start local 4 // int index
        13: .line 71
            aload 0 /* this */
            aload 2 /* targetModel */
            iload 4 /* index */
            aload 1 /* env */
            invokevirtual freemarker.core.DynamicKeyName.dealWithNumericalKey:(Lfreemarker/template/TemplateModel;ILfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            areturn
        end local 4 // int index
        14: .line 73
      StackMap locals:
      StackMap stack:
            aload 3 /* keyModel */
            instanceof freemarker.template.TemplateScalarModel
            ifeq 17
        15: .line 74
            aload 3 /* keyModel */
            checkcast freemarker.template.TemplateScalarModel
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 4 /* key */
        start local 4 // java.lang.String key
        16: .line 75
            aload 0 /* this */
            aload 2 /* targetModel */
            aload 4 /* key */
            aload 1 /* env */
            invokevirtual freemarker.core.DynamicKeyName.dealWithStringKey:(Lfreemarker/template/TemplateModel;Ljava/lang/String;Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            areturn
        end local 4 // java.lang.String key
        17: .line 77
      StackMap locals:
      StackMap stack:
            aload 3 /* keyModel */
            instanceof freemarker.core.RangeModel
            ifeq 19
        18: .line 78
            aload 0 /* this */
            aload 2 /* targetModel */
            aload 3 /* keyModel */
            checkcast freemarker.core.RangeModel
            aload 1 /* env */
            invokevirtual freemarker.core.DynamicKeyName.dealWithRangeKey:(Lfreemarker/template/TemplateModel;Lfreemarker/core/RangeModel;Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            areturn
        19: .line 80
      StackMap locals:
      StackMap stack:
            new freemarker.core.UnexpectedTypeException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            aload 3 /* keyModel */
            ldc "number, range, or string"
        20: .line 81
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lfreemarker/template/TemplateNumberModel;
            aastore
            dup
            iconst_1
            ldc Lfreemarker/template/TemplateScalarModel;
            aastore
            dup
            iconst_2
            ldc Lfreemarker/core/Range;
            aastore
            aload 1 /* env */
        21: .line 80
            invokespecial freemarker.core.UnexpectedTypeException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Ljava/lang/String;[Ljava/lang/Class;Lfreemarker/core/Environment;)V
            athrow
        end local 3 // freemarker.template.TemplateModel keyModel
        end local 2 // freemarker.template.TemplateModel targetModel
        end local 1 // freemarker.core.Environment env
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Lfreemarker/core/DynamicKeyName;
            0   22     1          env  Lfreemarker/core/Environment;
            1   22     2  targetModel  Lfreemarker/template/TemplateModel;
            6   22     3     keyModel  Lfreemarker/template/TemplateModel;
           13   14     4        index  I
           16   17     4          key  Ljava/lang/String;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
      Name  Flags
      env   

  private freemarker.template.TemplateModel dealWithNumericalKey(freemarker.template.TemplateModel, int, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;ILfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // freemarker.core.DynamicKeyName this
        start local 1 // freemarker.template.TemplateModel targetModel
        start local 2 // int index
        start local 3 // freemarker.core.Environment env
         0: .line 97
            aload 1 /* targetModel */
            instanceof freemarker.template.TemplateSequenceModel
            ifeq 9
         1: .line 98
            aload 1 /* targetModel */
            checkcast freemarker.template.TemplateSequenceModel
            astore 4 /* tsm */
        start local 4 // freemarker.template.TemplateSequenceModel tsm
         2: .line 101
            aload 4 /* tsm */
            invokeinterface freemarker.template.TemplateSequenceModel.size:()I
            istore 5 /* size */
        start local 5 // int size
         3: .line 102
            goto 6
        end local 5 // int size
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel int freemarker.core.Environment freemarker.template.TemplateSequenceModel
      StackMap stack: java.lang.Exception
         4: pop
         5: .line 103
            ldc 2147483647
            istore 5 /* size */
        start local 5 // int size
         6: .line 105
      StackMap locals: int
      StackMap stack:
            iload 2 /* index */
            iload 5 /* size */
            if_icmpge 7
            aload 4 /* tsm */
            iload 2 /* index */
            invokeinterface freemarker.template.TemplateSequenceModel.get:(I)Lfreemarker/template/TemplateModel;
            goto 8
      StackMap locals:
      StackMap stack:
         7: aconst_null
      StackMap locals:
      StackMap stack: freemarker.template.TemplateModel
         8: areturn
        end local 5 // int size
        end local 4 // freemarker.template.TemplateSequenceModel tsm
         9: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 3 /* env */
            invokevirtual freemarker.core.Expression.evalAndCoerceToPlainText:(Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 4 /* s */
        start local 4 // java.lang.String s
        10: .line 111
            new freemarker.template.SimpleScalar
            dup
            aload 4 /* s */
            iload 2 /* index */
            iload 2 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
        11: areturn
        12: .line 112
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel int freemarker.core.Environment java.lang.String
      StackMap stack: java.lang.IndexOutOfBoundsException
            astore 5 /* e */
        start local 5 // java.lang.IndexOutOfBoundsException e
        13: .line 113
            iload 2 /* index */
            ifge 15
        14: .line 114
            new freemarker.core._MiscTemplateException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Negative index not allowed: "
            aastore
            dup
            iconst_1
            iload 2 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:([Ljava/lang/Object;)V
            athrow
        15: .line 116
      StackMap locals: java.lang.IndexOutOfBoundsException
      StackMap stack:
            iload 2 /* index */
            aload 4 /* s */
            invokevirtual java.lang.String.length:()I
            if_icmplt 20
        16: .line 117
            new freemarker.core._MiscTemplateException
            dup
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        17: .line 118
            ldc "String index out of range: The index was "
            aastore
            dup
            iconst_1
            iload 2 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
        18: .line 119
            ldc " (0-based), but the length of the string is only "
            aastore
            dup
            iconst_3
            aload 4 /* s */
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            ldc "."
        19: .line 117
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:([Ljava/lang/Object;)V
            athrow
        20: .line 121
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            ldc "Can't explain exception"
            aload 5 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.IndexOutOfBoundsException e
        end local 4 // java.lang.String s
        21: .line 123
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel int freemarker.core.Environment
      StackMap stack: freemarker.core.NonStringException
            pop
        22: .line 124
            new freemarker.core.UnexpectedTypeException
            dup
        23: .line 125
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 1 /* targetModel */
        24: .line 126
            ldc "sequence or string or something automatically convertible to string (number, date or boolean)"
        25: .line 127
            getstatic freemarker.core.DynamicKeyName.NUMERICAL_KEY_LHO_EXPECTED_TYPES:[Ljava/lang/Class;
        26: .line 128
            aload 1 /* targetModel */
            instanceof freemarker.template.TemplateHashModel
            ifeq 29
        27: .line 129
            ldc "You had a numberical value inside the []. Currently that's only supported for sequences (lists) and strings. To get a Map item with a non-string key, use myMap?api.get(myKey)."
        28: .line 131
            goto 30
        29: .line 132
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel int freemarker.core.Environment
      StackMap stack: new 22 new 22 freemarker.core.Expression freemarker.template.TemplateModel java.lang.String java.lang.Class[]
            aconst_null
        30: .line 133
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel int freemarker.core.Environment
      StackMap stack: new 22 new 22 freemarker.core.Expression freemarker.template.TemplateModel java.lang.String java.lang.Class[] java.lang.String
            aload 3 /* env */
        31: .line 124
            invokespecial freemarker.core.UnexpectedTypeException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/String;Lfreemarker/core/Environment;)V
            athrow
        end local 3 // freemarker.core.Environment env
        end local 2 // int index
        end local 1 // freemarker.template.TemplateModel targetModel
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Lfreemarker/core/DynamicKeyName;
            0   32     1  targetModel  Lfreemarker/template/TemplateModel;
            0   32     2        index  I
            0   32     3          env  Lfreemarker/core/Environment;
            2    9     4          tsm  Lfreemarker/template/TemplateSequenceModel;
            3    4     5         size  I
            6    9     5         size  I
           10   21     4            s  Ljava/lang/String;
           13   21     5            e  Ljava/lang/IndexOutOfBoundsException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
          10    11      12  Class java.lang.IndexOutOfBoundsException
           9    11      21  Class freemarker.core.NonStringException
          12    21      21  Class freemarker.core.NonStringException
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
             Name  Flags
      targetModel  
      index        
      env          

  private freemarker.template.TemplateModel dealWithStringKey(freemarker.template.TemplateModel, java.lang.String, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Ljava/lang/String;Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // freemarker.core.DynamicKeyName this
        start local 1 // freemarker.template.TemplateModel targetModel
        start local 2 // java.lang.String key
        start local 3 // freemarker.core.Environment env
         0: .line 139
            aload 1 /* targetModel */
            instanceof freemarker.template.TemplateHashModel
            ifeq 2
         1: .line 140
            aload 1 /* targetModel */
            checkcast freemarker.template.TemplateHashModel
            aload 2 /* key */
            invokeinterface freemarker.template.TemplateHashModel.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
            areturn
         2: .line 142
      StackMap locals:
      StackMap stack:
            new freemarker.core.NonHashException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 1 /* targetModel */
            aload 3 /* env */
            invokespecial freemarker.core.NonHashException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
            athrow
        end local 3 // freemarker.core.Environment env
        end local 2 // java.lang.String key
        end local 1 // freemarker.template.TemplateModel targetModel
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lfreemarker/core/DynamicKeyName;
            0    3     1  targetModel  Lfreemarker/template/TemplateModel;
            0    3     2          key  Ljava/lang/String;
            0    3     3          env  Lfreemarker/core/Environment;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
             Name  Flags
      targetModel  
      key          
      env          

  private freemarker.template.TemplateModel dealWithRangeKey(freemarker.template.TemplateModel, freemarker.core.RangeModel, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/RangeModel;Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=16, args_size=4
        start local 0 // freemarker.core.DynamicKeyName this
        start local 1 // freemarker.template.TemplateModel targetModel
        start local 2 // freemarker.core.RangeModel range
        start local 3 // freemarker.core.Environment env
         0: .line 149
            aload 1 /* targetModel */
            instanceof freemarker.template.TemplateSequenceModel
            ifeq 4
         1: .line 150
            aload 1 /* targetModel */
            checkcast freemarker.template.TemplateSequenceModel
            astore 4 /* targetSeq */
        start local 4 // freemarker.template.TemplateSequenceModel targetSeq
         2: .line 151
            aconst_null
            astore 5 /* targetStr */
        start local 5 // java.lang.String targetStr
         3: .line 152
            goto 13
        end local 5 // java.lang.String targetStr
        end local 4 // freemarker.template.TemplateSequenceModel targetSeq
         4: .line 153
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* targetSeq */
        start local 4 // freemarker.template.TemplateSequenceModel targetSeq
         5: .line 155
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 3 /* env */
            invokevirtual freemarker.core.Expression.evalAndCoerceToPlainText:(Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 5 /* targetStr */
        start local 5 // java.lang.String targetStr
         6: .line 156
            goto 13
        end local 5 // java.lang.String targetStr
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel
      StackMap stack: freemarker.core.NonStringException
         7: pop
         8: .line 157
            new freemarker.core.UnexpectedTypeException
            dup
         9: .line 158
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            aload 3 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
        10: .line 159
            ldc "sequence or string or something automatically convertible to string (number, date or boolean)"
        11: .line 160
            getstatic freemarker.core.DynamicKeyName.NUMERICAL_KEY_LHO_EXPECTED_TYPES:[Ljava/lang/Class;
            aload 3 /* env */
        12: .line 157
            invokespecial freemarker.core.UnexpectedTypeException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Ljava/lang/String;[Ljava/lang/Class;Lfreemarker/core/Environment;)V
            athrow
        start local 5 // java.lang.String targetStr
        13: .line 164
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.size:()I
            istore 6 /* size */
        start local 6 // int size
        14: .line 165
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.isRightUnbounded:()Z
            istore 7 /* rightUnbounded */
        start local 7 // boolean rightUnbounded
        15: .line 166
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.isRightAdaptive:()Z
            istore 8 /* rightAdaptive */
        start local 8 // boolean rightAdaptive
        16: .line 170
            iload 7 /* rightUnbounded */
            ifne 20
            iload 6 /* size */
            ifne 20
        17: .line 171
            aload 0 /* this */
            aload 4 /* targetSeq */
            ifnull 18
            iconst_1
            goto 19
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int
      StackMap stack: freemarker.core.DynamicKeyName
        18: iconst_0
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int
      StackMap stack: freemarker.core.DynamicKeyName int
        19: invokevirtual freemarker.core.DynamicKeyName.emptyResult:(Z)Lfreemarker/template/TemplateModel;
            areturn
        20: .line 174
      StackMap locals:
      StackMap stack:
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.getBegining:()I
            istore 9 /* firstIdx */
        start local 9 // int firstIdx
        21: .line 175
            iload 9 /* firstIdx */
            ifge 26
        22: .line 176
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        23: .line 177
            ldc "Negative range start index ("
            aastore
            dup
            iconst_1
            iload 9 /* firstIdx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
        24: .line 178
            ldc ") isn't allowed for a range used for slicing."
        25: .line 176
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        26: .line 181
      StackMap locals: int
      StackMap stack:
            aload 5 /* targetStr */
            ifnull 27
            aload 5 /* targetStr */
            invokevirtual java.lang.String.length:()I
            goto 28
      StackMap locals:
      StackMap stack:
        27: aload 4 /* targetSeq */
            invokeinterface freemarker.template.TemplateSequenceModel.size:()I
      StackMap locals:
      StackMap stack: int
        28: istore 10 /* targetSize */
        start local 10 // int targetSize
        29: .line 182
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.getStep:()I
            istore 11 /* step */
        start local 11 // int step
        30: .line 189
            iload 8 /* rightAdaptive */
            ifeq 31
            iload 11 /* step */
            iconst_1
            if_icmpne 31
            iload 9 /* firstIdx */
            iload 10 /* targetSize */
            if_icmple 42
            goto 32
      StackMap locals: int int
      StackMap stack:
        31: iload 9 /* firstIdx */
            iload 10 /* targetSize */
            if_icmplt 42
        32: .line 190
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            bipush 10
            anewarray java.lang.Object
            dup
            iconst_0
        33: .line 191
            ldc "Range start index "
            aastore
            dup
            iconst_1
            iload 9 /* firstIdx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            ldc " is out of bounds, because the sliced "
            aastore
            dup
            iconst_3
        34: .line 192
            aload 5 /* targetStr */
            ifnull 35
            ldc "string"
            goto 36
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int
      StackMap stack: new 32 new 32 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int
        35: ldc "sequence"
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int
      StackMap stack: new 32 new 32 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int java.lang.String
        36: aastore
            dup
            iconst_4
        37: .line 193
            ldc " has only "
            aastore
            dup
            iconst_5
            iload 10 /* targetSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            bipush 6
            ldc " "
            aastore
            dup
            bipush 7
            aload 5 /* targetStr */
            ifnull 38
            ldc "character(s)"
            goto 39
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int
      StackMap stack: new 32 new 32 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int
        38: ldc "element(s)"
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int
      StackMap stack: new 32 new 32 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int java.lang.String
        39: aastore
            dup
            bipush 8
        40: .line 194
            ldc ". "
            aastore
            dup
            bipush 9
            ldc "(Note that indices are 0-based)."
        41: .line 190
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        42: .line 198
      StackMap locals:
      StackMap stack:
            iload 7 /* rightUnbounded */
            ifne 68
        43: .line 199
            iload 9 /* firstIdx */
            iload 6 /* size */
            iconst_1
            isub
            iload 11 /* step */
            imul
            iadd
            istore 13 /* lastIdx */
        start local 13 // int lastIdx
        44: .line 200
            iload 13 /* lastIdx */
            ifge 52
        45: .line 201
            iload 8 /* rightAdaptive */
            ifne 50
        46: .line 202
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        47: .line 203
            ldc "Negative range end index ("
            aastore
            dup
            iconst_1
            iload 13 /* lastIdx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
        48: .line 204
            ldc ") isn't allowed for a range used for slicing."
        49: .line 202
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        50: .line 206
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int top int
      StackMap stack:
            iload 9 /* firstIdx */
            iconst_1
            iadd
            istore 12 /* resultSize */
        start local 12 // int resultSize
        51: .line 208
            goto 69
        end local 12 // int resultSize
      StackMap locals:
      StackMap stack:
        52: iload 13 /* lastIdx */
            iload 10 /* targetSize */
            if_icmplt 66
        53: .line 209
            iload 8 /* rightAdaptive */
            ifne 64
        54: .line 210
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            bipush 9
            anewarray java.lang.Object
            dup
            iconst_0
        55: .line 211
            ldc "Range end index "
            aastore
            dup
            iconst_1
            iload 13 /* lastIdx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            ldc " is out of bounds, because the sliced "
            aastore
            dup
            iconst_3
        56: .line 212
            aload 5 /* targetStr */
            ifnull 57
            ldc "string"
            goto 58
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int top int
      StackMap stack: new 54 new 54 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int
        57: ldc "sequence"
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int top int
      StackMap stack: new 54 new 54 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int java.lang.String
        58: aastore
            dup
            iconst_4
        59: .line 213
            ldc " has only "
            aastore
            dup
            iconst_5
            iload 10 /* targetSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            bipush 6
            ldc " "
            aastore
            dup
            bipush 7
            aload 5 /* targetStr */
            ifnull 60
            ldc "character(s)"
            goto 61
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int top int
      StackMap stack: new 54 new 54 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int
        60: ldc "element(s)"
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int top int
      StackMap stack: new 54 new 54 freemarker.core.Expression java.lang.Object[] java.lang.Object[] int java.lang.String
        61: aastore
            dup
            bipush 8
        62: .line 214
            ldc ". (Note that indices are 0-based)."
        63: .line 210
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        64: .line 216
      StackMap locals:
      StackMap stack:
            iload 10 /* targetSize */
            iload 9 /* firstIdx */
            isub
            invokestatic java.lang.Math.abs:(I)I
            istore 12 /* resultSize */
        start local 12 // int resultSize
        65: .line 218
            goto 69
        end local 12 // int resultSize
        66: .line 219
      StackMap locals:
      StackMap stack:
            iload 6 /* size */
            istore 12 /* resultSize */
        end local 13 // int lastIdx
        start local 12 // int resultSize
        67: .line 221
            goto 69
        end local 12 // int resultSize
        68: .line 222
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int
      StackMap stack:
            iload 10 /* targetSize */
            iload 9 /* firstIdx */
            isub
            istore 12 /* resultSize */
        start local 12 // int resultSize
        69: .line 225
      StackMap locals: int
      StackMap stack:
            iload 12 /* resultSize */
            ifne 73
        70: .line 226
            aload 0 /* this */
            aload 4 /* targetSeq */
            ifnull 71
            iconst_1
            goto 72
      StackMap locals:
      StackMap stack: freemarker.core.DynamicKeyName
        71: iconst_0
      StackMap locals: freemarker.core.DynamicKeyName freemarker.template.TemplateModel freemarker.core.RangeModel freemarker.core.Environment freemarker.template.TemplateSequenceModel java.lang.String int int int int int int int
      StackMap stack: freemarker.core.DynamicKeyName int
        72: invokevirtual freemarker.core.DynamicKeyName.emptyResult:(Z)Lfreemarker/template/TemplateModel;
            areturn
        73: .line 228
      StackMap locals:
      StackMap stack:
            aload 4 /* targetSeq */
            ifnull 83
        74: .line 229
            new java.util.ArrayList
            dup
            iload 12 /* resultSize */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 13 /* list */
        start local 13 // java.util.ArrayList list
        75: .line 230
            iload 9 /* firstIdx */
            istore 14 /* srcIdx */
        start local 14 // int srcIdx
        76: .line 231
            iconst_0
            istore 15 /* i */
        start local 15 // int i
        77: goto 81
        78: .line 232
      StackMap locals: java.util.ArrayList int int
      StackMap stack:
            aload 13 /* list */
            aload 4 /* targetSeq */
            iload 14 /* srcIdx */
            invokeinterface freemarker.template.TemplateSequenceModel.get:(I)Lfreemarker/template/TemplateModel;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        79: .line 233
            iload 14 /* srcIdx */
            iload 11 /* step */
            iadd
            istore 14 /* srcIdx */
        80: .line 231
            iinc 15 /* i */ 1
      StackMap locals:
      StackMap stack:
        81: iload 15 /* i */
            iload 12 /* resultSize */
            if_icmplt 78
        end local 15 // int i
        82: .line 236
            new freemarker.template.SimpleSequence
            dup
            aload 13 /* list */
            aconst_null
            invokespecial freemarker.template.SimpleSequence.<init>:(Ljava/util/Collection;Lfreemarker/template/ObjectWrapper;)V
            areturn
        end local 14 // int srcIdx
        end local 13 // java.util.ArrayList list
        83: .line 239
      StackMap locals:
      StackMap stack:
            iload 11 /* step */
            ifge 92
            iload 12 /* resultSize */
            iconst_1
            if_icmple 92
        84: .line 240
            aload 2 /* range */
            invokevirtual freemarker.core.RangeModel.isAffactedByStringSlicingBug:()Z
            ifeq 85
            iload 12 /* resultSize */
            iconst_2
            if_icmpeq 90
        85: .line 241
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        86: .line 242
            ldc "Decreasing ranges aren't allowed for slicing strings (as it would give reversed text). The index range was: first = "
            aastore
            dup
            iconst_1
        87: .line 243
            iload 9 /* firstIdx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
        88: .line 244
            ldc ", last = "
            aastore
            dup
            iconst_3
            iload 9 /* firstIdx */
            iload 12 /* resultSize */
            iconst_1
            isub
            iload 11 /* step */
            imul
            iadd
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        89: .line 241
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        90: .line 248
      StackMap locals:
      StackMap stack:
            iload 9 /* firstIdx */
            istore 13 /* exclEndIdx */
        start local 13 // int exclEndIdx
        91: .line 250
            goto 93
        end local 13 // int exclEndIdx
        92: .line 251
      StackMap locals:
      StackMap stack:
            iload 9 /* firstIdx */
            iload 12 /* resultSize */
            iadd
            istore 13 /* exclEndIdx */
        start local 13 // int exclEndIdx
        93: .line 254
      StackMap locals: int
      StackMap stack:
            new freemarker.template.SimpleScalar
            dup
            aload 5 /* targetStr */
            iload 9 /* firstIdx */
            iload 13 /* exclEndIdx */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        end local 13 // int exclEndIdx
        end local 12 // int resultSize
        end local 11 // int step
        end local 10 // int targetSize
        end local 9 // int firstIdx
        end local 8 // boolean rightAdaptive
        end local 7 // boolean rightUnbounded
        end local 6 // int size
        end local 5 // java.lang.String targetStr
        end local 4 // freemarker.template.TemplateSequenceModel targetSeq
        end local 3 // freemarker.core.Environment env
        end local 2 // freemarker.core.RangeModel range
        end local 1 // freemarker.template.TemplateModel targetModel
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   94     0            this  Lfreemarker/core/DynamicKeyName;
            0   94     1     targetModel  Lfreemarker/template/TemplateModel;
            0   94     2           range  Lfreemarker/core/RangeModel;
            0   94     3             env  Lfreemarker/core/Environment;
            2    4     4       targetSeq  Lfreemarker/template/TemplateSequenceModel;
            5   94     4       targetSeq  Lfreemarker/template/TemplateSequenceModel;
            3    4     5       targetStr  Ljava/lang/String;
            6    7     5       targetStr  Ljava/lang/String;
           13   94     5       targetStr  Ljava/lang/String;
           14   94     6            size  I
           15   94     7  rightUnbounded  Z
           16   94     8   rightAdaptive  Z
           21   94     9        firstIdx  I
           29   94    10      targetSize  I
           30   94    11            step  I
           51   52    12      resultSize  I
           65   66    12      resultSize  I
           67   68    12      resultSize  I
           69   94    12      resultSize  I
           44   67    13         lastIdx  I
           75   83    13            list  Ljava/util/ArrayList;
           76   83    14          srcIdx  I
           77   82    15               i  I
           91   92    13      exclEndIdx  I
           93   94    13      exclEndIdx  I
      Exception table:
        from    to  target  type
           5     6       7  Class freemarker.core.NonStringException
    Exceptions:
      throws freemarker.core.UnexpectedTypeException, freemarker.core.InvalidReferenceException, freemarker.template.TemplateException
    MethodParameters:
             Name  Flags
      targetModel  
      range        
      env          

  private freemarker.template.TemplateModel emptyResult(boolean);
    descriptor: (Z)Lfreemarker/template/TemplateModel;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // freemarker.core.DynamicKeyName this
        start local 1 // boolean seq
         0: .line 259
            iload 1 /* seq */
            ifeq 4
         1: .line 260
            aload 0 /* this */
            invokestatic freemarker.template._TemplateAPI.getTemplateLanguageVersionAsInt:(Lfreemarker/core/TemplateObject;)I
            getstatic freemarker.template._TemplateAPI.VERSION_INT_2_3_21:I
            if_icmpge 3
         2: .line 261
            new freemarker.template.SimpleSequence
            dup
            getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
            aconst_null
            invokespecial freemarker.template.SimpleSequence.<init>:(Ljava/util/Collection;Lfreemarker/template/ObjectWrapper;)V
            goto 5
         3: .line 262
      StackMap locals:
      StackMap stack:
            getstatic freemarker.template.utility.Constants.EMPTY_SEQUENCE:Lfreemarker/template/TemplateSequenceModel;
            goto 5
         4: .line 263
      StackMap locals:
      StackMap stack:
            getstatic freemarker.template.TemplateScalarModel.EMPTY_STRING:Lfreemarker/template/TemplateModel;
         5: .line 259
      StackMap locals:
      StackMap stack: freemarker.template.TemplateModel
            areturn
        end local 1 // boolean seq
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lfreemarker/core/DynamicKeyName;
            0    6     1   seq  Z
    MethodParameters:
      Name  Flags
      seq   

  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.DynamicKeyName this
         0: .line 268
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target: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
         1: .line 269
            ldc "["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 270
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
            invokevirtual freemarker.core.Expression.getCanonicalForm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 271
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 268
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lfreemarker/core/DynamicKeyName;

  java.lang.String getNodeTypeSymbol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.DynamicKeyName this
         0: .line 276
            ldc "...[...]"
            areturn
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/DynamicKeyName;

  boolean isLiteral();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.DynamicKeyName this
         0: .line 281
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.constantValue:Lfreemarker/template/TemplateModel;
            ifnonnull 2
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            invokevirtual freemarker.core.Expression.isLiteral:()Z
            ifeq 1
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression: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.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lfreemarker/core/DynamicKeyName;

  int getParameterCount();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.DynamicKeyName this
         0: .line 286
            iconst_2
            ireturn
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/DynamicKeyName;

  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.DynamicKeyName this
        start local 1 // int idx
         0: .line 291
            iload 1 /* idx */
            ifne 1
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target:Lfreemarker/core/Expression;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression:Lfreemarker/core/Expression;
      StackMap locals:
      StackMap stack: freemarker.core.Expression
         2: areturn
        end local 1 // int idx
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lfreemarker/core/DynamicKeyName;
            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.DynamicKeyName this
        start local 1 // int idx
         0: .line 296
            iload 1 /* idx */
            ifne 1
            getstatic freemarker.core.ParameterRole.LEFT_HAND_OPERAND:Lfreemarker/core/ParameterRole;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic freemarker.core.ParameterRole.ENCLOSED_OPERAND:Lfreemarker/core/ParameterRole;
      StackMap locals:
      StackMap stack: freemarker.core.ParameterRole
         2: areturn
        end local 1 // int idx
        end local 0 // freemarker.core.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lfreemarker/core/DynamicKeyName;
            0    3     1   idx  I
    MethodParameters:
      Name  Flags
      idx   

  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.DynamicKeyName 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 302
            new freemarker.core.DynamicKeyName
            dup
         1: .line 303
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.target: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 304
            aload 0 /* this */
            getfield freemarker.core.DynamicKeyName.keyExpression: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 302
            invokespecial freemarker.core.DynamicKeyName.<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.DynamicKeyName this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lfreemarker/core/DynamicKeyName;
            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    
}
SourceFile: "DynamicKeyName.java"
InnerClasses:
  ReplacemenetState = freemarker.core.Expression$ReplacemenetState of freemarker.core.Expression