final class freemarker.core.BuiltinVariable extends freemarker.core.Expression
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: freemarker.core.BuiltinVariable
  super_class: freemarker.core.Expression
{
  static final java.lang.String TEMPLATE_NAME_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "templateName"

  static final java.lang.String TEMPLATE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "template_name"

  static final java.lang.String MAIN_TEMPLATE_NAME_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "mainTemplateName"

  static final java.lang.String MAIN_TEMPLATE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "main_template_name"

  static final java.lang.String CURRENT_TEMPLATE_NAME_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "currentTemplateName"

  static final java.lang.String CURRENT_TEMPLATE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "current_template_name"

  static final java.lang.String NAMESPACE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "namespace"

  static final java.lang.String MAIN;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "main"

  static final java.lang.String GLOBALS;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "globals"

  static final java.lang.String LOCALS;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "locals"

  static final java.lang.String DATA_MODEL_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "dataModel"

  static final java.lang.String DATA_MODEL;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "data_model"

  static final java.lang.String LANG;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "lang"

  static final java.lang.String LOCALE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "locale"

  static final java.lang.String LOCALE_OBJECT_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "localeObject"

  static final java.lang.String LOCALE_OBJECT;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "locale_object"

  static final java.lang.String CURRENT_NODE_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "currentNode"

  static final java.lang.String CURRENT_NODE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "current_node"

  static final java.lang.String NODE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "node"

  static final java.lang.String PASS;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "pass"

  static final java.lang.String VARS;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "vars"

  static final java.lang.String VERSION;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "version"

  static final java.lang.String INCOMPATIBLE_IMPROVEMENTS_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "incompatibleImprovements"

  static final java.lang.String INCOMPATIBLE_IMPROVEMENTS;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "incompatible_improvements"

  static final java.lang.String ERROR;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "error"

  static final java.lang.String OUTPUT_ENCODING_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "outputEncoding"

  static final java.lang.String OUTPUT_ENCODING;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "output_encoding"

  static final java.lang.String OUTPUT_FORMAT_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "outputFormat"

  static final java.lang.String OUTPUT_FORMAT;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "output_format"

  static final java.lang.String AUTO_ESC_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "autoEsc"

  static final java.lang.String AUTO_ESC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "auto_esc"

  static final java.lang.String URL_ESCAPING_CHARSET_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "urlEscapingCharset"

  static final java.lang.String URL_ESCAPING_CHARSET;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "url_escaping_charset"

  static final java.lang.String NOW;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "now"

  static final java.lang.String GET_OPTIONAL_TEMPLATE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "get_optional_template"

  static final java.lang.String GET_OPTIONAL_TEMPLATE_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "getOptionalTemplate"

  static final java.lang.String CALLER_TEMPLATE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "caller_template_name"

  static final java.lang.String CALLER_TEMPLATE_NAME_CC;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "callerTemplateName"

  static final java.lang.String[] SPEC_VAR_NAMES;
    descriptor: [Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final freemarker.template.TemplateModel parseTimeValue;
    descriptor: Lfreemarker/template/TemplateModel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 81
            bipush 38
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 83
            ldc "autoEsc"
            aastore
            dup
            iconst_1
         2: .line 84
            ldc "auto_esc"
            aastore
            dup
            iconst_2
         3: .line 85
            ldc "callerTemplateName"
            aastore
            dup
            iconst_3
         4: .line 86
            ldc "caller_template_name"
            aastore
            dup
            iconst_4
         5: .line 87
            ldc "currentNode"
            aastore
            dup
            iconst_5
         6: .line 88
            ldc "currentTemplateName"
            aastore
            dup
            bipush 6
         7: .line 89
            ldc "current_node"
            aastore
            dup
            bipush 7
         8: .line 90
            ldc "current_template_name"
            aastore
            dup
            bipush 8
         9: .line 91
            ldc "dataModel"
            aastore
            dup
            bipush 9
        10: .line 92
            ldc "data_model"
            aastore
            dup
            bipush 10
        11: .line 93
            ldc "error"
            aastore
            dup
            bipush 11
        12: .line 94
            ldc "getOptionalTemplate"
            aastore
            dup
            bipush 12
        13: .line 95
            ldc "get_optional_template"
            aastore
            dup
            bipush 13
        14: .line 96
            ldc "globals"
            aastore
            dup
            bipush 14
        15: .line 97
            ldc "incompatibleImprovements"
            aastore
            dup
            bipush 15
        16: .line 98
            ldc "incompatible_improvements"
            aastore
            dup
            bipush 16
        17: .line 99
            ldc "lang"
            aastore
            dup
            bipush 17
        18: .line 100
            ldc "locale"
            aastore
            dup
            bipush 18
        19: .line 101
            ldc "localeObject"
            aastore
            dup
            bipush 19
        20: .line 102
            ldc "locale_object"
            aastore
            dup
            bipush 20
        21: .line 103
            ldc "locals"
            aastore
            dup
            bipush 21
        22: .line 104
            ldc "main"
            aastore
            dup
            bipush 22
        23: .line 105
            ldc "mainTemplateName"
            aastore
            dup
            bipush 23
        24: .line 106
            ldc "main_template_name"
            aastore
            dup
            bipush 24
        25: .line 107
            ldc "namespace"
            aastore
            dup
            bipush 25
        26: .line 108
            ldc "node"
            aastore
            dup
            bipush 26
        27: .line 109
            ldc "now"
            aastore
            dup
            bipush 27
        28: .line 110
            ldc "outputEncoding"
            aastore
            dup
            bipush 28
        29: .line 111
            ldc "outputFormat"
            aastore
            dup
            bipush 29
        30: .line 112
            ldc "output_encoding"
            aastore
            dup
            bipush 30
        31: .line 113
            ldc "output_format"
            aastore
            dup
            bipush 31
        32: .line 114
            ldc "pass"
            aastore
            dup
            bipush 32
        33: .line 115
            ldc "templateName"
            aastore
            dup
            bipush 33
        34: .line 116
            ldc "template_name"
            aastore
            dup
            bipush 34
        35: .line 117
            ldc "urlEscapingCharset"
            aastore
            dup
            bipush 35
        36: .line 118
            ldc "url_escaping_charset"
            aastore
            dup
            bipush 36
        37: .line 119
            ldc "vars"
            aastore
            dup
            bipush 37
        38: .line 120
            ldc "version"
            aastore
        39: .line 81
            putstatic freemarker.core.BuiltinVariable.SPEC_VAR_NAMES:[Ljava/lang/String;
        40: .line 121
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(freemarker.core.Token, freemarker.core.FMParserTokenManager, freemarker.template.TemplateModel);
    descriptor: (Lfreemarker/core/Token;Lfreemarker/core/FMParserTokenManager;Lfreemarker/template/TemplateModel;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // freemarker.core.BuiltinVariable this
        start local 1 // freemarker.core.Token nameTk
        start local 2 // freemarker.core.FMParserTokenManager tokenManager
        start local 3 // freemarker.template.TemplateModel parseTimeValue
         0: .line 126
            aload 0 /* this */
            invokespecial freemarker.core.Expression.<init>:()V
         1: .line 128
            aload 1 /* nameTk */
            getfield freemarker.core.Token.image:Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         2: .line 129
            aload 0 /* this */
            aload 3 /* parseTimeValue */
            putfield freemarker.core.BuiltinVariable.parseTimeValue:Lfreemarker/template/TemplateModel;
         3: .line 130
            getstatic freemarker.core.BuiltinVariable.SPEC_VAR_NAMES:[Ljava/lang/String;
            aload 4 /* name */
            invokestatic java.util.Arrays.binarySearch:([Ljava/lang/Object;Ljava/lang/Object;)I
            ifge 39
         4: .line 131
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* sb */
        start local 5 // java.lang.StringBuilder sb
         5: .line 132
            aload 5 /* sb */
            ldc "Unknown special variable name: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 133
            aload 5 /* sb */
            aload 4 /* name */
            invokestatic freemarker.template.utility.StringUtil.jQuote:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 137
            aload 2 /* tokenManager */
            getfield freemarker.core.FMParserTokenManager.namingConvention:I
            istore 7 /* namingConvention */
        start local 7 // int namingConvention
         8: .line 138
            iload 7 /* namingConvention */
            bipush 10
            if_icmpeq 10
         9: .line 139
            iload 7 /* namingConvention */
            goto 11
      StackMap locals: freemarker.core.BuiltinVariable freemarker.core.Token freemarker.core.FMParserTokenManager freemarker.template.TemplateModel java.lang.String java.lang.StringBuilder top int
      StackMap stack:
        10: bipush 11
        11: .line 138
      StackMap locals:
      StackMap stack: int
            istore 6 /* shownNamingConvention */
        end local 7 // int namingConvention
        start local 6 // int shownNamingConvention
        12: .line 144
            aload 4 /* name */
            ldc "auto_escape"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            aload 4 /* name */
            ldc "auto_escaping"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            aload 4 /* name */
            ldc "autoesc"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        13: .line 145
      StackMap locals: freemarker.core.BuiltinVariable freemarker.core.Token freemarker.core.FMParserTokenManager freemarker.template.TemplateModel java.lang.String java.lang.StringBuilder int
      StackMap stack:
            ldc "auto_esc"
            astore 7 /* correctName */
        start local 7 // java.lang.String correctName
        14: .line 146
            goto 19
        end local 7 // java.lang.String correctName
      StackMap locals:
      StackMap stack:
        15: aload 4 /* name */
            ldc "autoEscape"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            aload 4 /* name */
            ldc "autoEscaping"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        16: .line 147
      StackMap locals:
      StackMap stack:
            ldc "autoEsc"
            astore 7 /* correctName */
        start local 7 // java.lang.String correctName
        17: .line 148
            goto 19
        end local 7 // java.lang.String correctName
        18: .line 149
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7 /* correctName */
        start local 7 // java.lang.String correctName
        19: .line 151
      StackMap locals: java.lang.String
      StackMap stack:
            aload 7 /* correctName */
            ifnull 22
        20: .line 152
            aload 5 /* sb */
            ldc " You may meant: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 153
            aload 5 /* sb */
            aload 7 /* correctName */
            invokestatic freemarker.template.utility.StringUtil.jQuote:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.String correctName
        22: .line 157
      StackMap locals:
      StackMap stack:
            aload 5 /* sb */
            ldc "\nThe allowed special variable names are: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        23: .line 158
            iconst_1
            istore 7 /* first */
        start local 7 // boolean first
        24: .line 159
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        25: goto 37
        26: .line 160
      StackMap locals: int int
      StackMap stack:
            getstatic freemarker.core.BuiltinVariable.SPEC_VAR_NAMES:[Ljava/lang/String;
            iload 8 /* i */
            aaload
            astore 9 /* correctName */
        start local 9 // java.lang.String correctName
        27: .line 161
            aload 9 /* correctName */
            invokestatic freemarker.core._CoreStringUtils.getIdentifierNamingConvention:(Ljava/lang/String;)I
            istore 10 /* correctNameNamingConvetion */
        start local 10 // int correctNameNamingConvetion
        28: .line 162
            iload 6 /* shownNamingConvention */
            bipush 12
            if_icmpne 30
        29: .line 163
            iload 10 /* correctNameNamingConvetion */
            bipush 11
            if_icmpeq 36
            goto 31
        30: .line 164
      StackMap locals: java.lang.String int
      StackMap stack:
            iload 10 /* correctNameNamingConvetion */
            bipush 12
            if_icmpeq 36
        31: .line 165
      StackMap locals:
      StackMap stack:
            iload 7 /* first */
            ifeq 34
        32: .line 166
            iconst_0
            istore 7 /* first */
        33: .line 167
            goto 35
        34: .line 168
      StackMap locals:
      StackMap stack:
            aload 5 /* sb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        35: .line 170
      StackMap locals:
      StackMap stack:
            aload 5 /* sb */
            aload 9 /* correctName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 10 // int correctNameNamingConvetion
        end local 9 // java.lang.String correctName
        36: .line 159
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        37: iload 8 /* i */
            getstatic freemarker.core.BuiltinVariable.SPEC_VAR_NAMES:[Ljava/lang/String;
            arraylength
            if_icmplt 26
        end local 8 // int i
        38: .line 173
            new freemarker.core.ParseException
            dup
            aload 5 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aconst_null
            aload 1 /* nameTk */
            invokespecial freemarker.core.ParseException.<init>:(Ljava/lang/String;Lfreemarker/template/Template;Lfreemarker/core/Token;)V
            athrow
        end local 7 // boolean first
        end local 6 // int shownNamingConvention
        end local 5 // java.lang.StringBuilder sb
        39: .line 176
      StackMap locals: freemarker.core.BuiltinVariable freemarker.core.Token freemarker.core.FMParserTokenManager freemarker.template.TemplateModel java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 4 /* name */
            invokevirtual java.lang.String.intern:()Ljava/lang/String;
            putfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
        40: .line 177
            return
        end local 4 // java.lang.String name
        end local 3 // freemarker.template.TemplateModel parseTimeValue
        end local 2 // freemarker.core.FMParserTokenManager tokenManager
        end local 1 // freemarker.core.Token nameTk
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   41     0                        this  Lfreemarker/core/BuiltinVariable;
            0   41     1                      nameTk  Lfreemarker/core/Token;
            0   41     2                tokenManager  Lfreemarker/core/FMParserTokenManager;
            0   41     3              parseTimeValue  Lfreemarker/template/TemplateModel;
            2   41     4                        name  Ljava/lang/String;
            5   39     5                          sb  Ljava/lang/StringBuilder;
           12   39     6       shownNamingConvention  I
            8   12     7            namingConvention  I
           14   15     7                 correctName  Ljava/lang/String;
           17   18     7                 correctName  Ljava/lang/String;
           19   22     7                 correctName  Ljava/lang/String;
           24   39     7                       first  Z
           25   38     8                           i  I
           27   36     9                 correctName  Ljava/lang/String;
           28   36    10  correctNameNamingConvetion  I
    Exceptions:
      throws freemarker.core.ParseException
    MethodParameters:
                Name  Flags
      nameTk          
      tokenManager    
      parseTimeValue  

  freemarker.template.TemplateModel _eval(freemarker.core.Environment);
    descriptor: (Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0000) 
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // freemarker.core.BuiltinVariable this
        start local 1 // freemarker.core.Environment env
         0: .line 181
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.parseTimeValue:Lfreemarker/template/TemplateModel;
            ifnull 2
         1: .line 182
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.parseTimeValue:Lfreemarker/template/TemplateModel;
            areturn
         2: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "namespace"
            if_acmpne 4
         3: .line 185
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentNamespace:()Lfreemarker/core/Environment$Namespace;
            areturn
         4: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "main"
            if_acmpne 6
         5: .line 188
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getMainNamespace:()Lfreemarker/core/Environment$Namespace;
            areturn
         6: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "globals"
            if_acmpne 8
         7: .line 191
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getGlobalVariables:()Lfreemarker/template/TemplateHashModel;
            areturn
         8: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "locals"
            if_acmpne 13
         9: .line 194
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentMacroContext:()Lfreemarker/core/Macro$Context;
            astore 2 /* ctx */
        start local 2 // freemarker.core.Macro$Context ctx
        10: .line 195
            aload 2 /* ctx */
            ifnonnull 11
            aconst_null
            goto 12
      StackMap locals: freemarker.core.Macro$Context
      StackMap stack:
        11: aload 2 /* ctx */
            invokevirtual freemarker.core.Macro$Context.getLocals:()Lfreemarker/core/Environment$Namespace;
      StackMap locals:
      StackMap stack: freemarker.core.Environment$Namespace
        12: areturn
        end local 2 // freemarker.core.Macro$Context ctx
        13: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "data_model"
            if_acmpeq 14
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "dataModel"
            if_acmpne 15
        14: .line 198
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getDataModel:()Lfreemarker/template/TemplateHashModel;
            areturn
        15: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "vars"
            if_acmpne 17
        16: .line 201
            new freemarker.core.BuiltinVariable$VarsHash
            dup
            aload 1 /* env */
            invokespecial freemarker.core.BuiltinVariable$VarsHash.<init>:(Lfreemarker/core/Environment;)V
            areturn
        17: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "locale"
            if_acmpne 19
        18: .line 204
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getLocale:()Ljava/util/Locale;
            invokevirtual java.util.Locale.toString:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        19: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "locale_object"
            if_acmpeq 20
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "localeObject"
            if_acmpne 21
        20: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getObjectWrapper:()Lfreemarker/template/ObjectWrapper;
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getLocale:()Ljava/util/Locale;
            invokeinterface freemarker.template.ObjectWrapper.wrap:(Ljava/lang/Object;)Lfreemarker/template/TemplateModel;
            areturn
        21: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "lang"
            if_acmpne 23
        22: .line 210
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getLocale:()Ljava/util/Locale;
            invokevirtual java.util.Locale.getLanguage:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        23: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "current_node"
            if_acmpeq 24
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "node"
            if_acmpeq 24
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "currentNode"
            if_acmpne 25
        24: .line 213
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentVisitorNode:()Lfreemarker/template/TemplateNodeModel;
            areturn
        25: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "template_name"
            if_acmpeq 26
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "templateName"
            if_acmpne 30
        26: .line 219
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getConfiguration:()Lfreemarker/template/Configuration;
            invokevirtual freemarker.template.Configuration.getIncompatibleImprovements:()Lfreemarker/template/Version;
            invokevirtual freemarker.template.Version.intValue:()I
            getstatic freemarker.template._TemplateAPI.VERSION_INT_2_3_23:I
            if_icmplt 28
        27: .line 220
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getTemplate230:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            goto 29
        28: .line 221
      StackMap locals:
      StackMap stack:
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
        29: .line 219
      StackMap locals:
      StackMap stack: freemarker.template.SimpleScalar
            areturn
        30: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "main_template_name"
            if_acmpeq 31
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "mainTemplateName"
            if_acmpne 32
        31: .line 224
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getMainTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
            invokestatic freemarker.template.SimpleScalar.newInstanceOrNull:(Ljava/lang/String;)Lfreemarker/template/SimpleScalar;
            areturn
        32: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "current_template_name"
            if_acmpeq 33
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "currentTemplateName"
            if_acmpne 34
        33: .line 227
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
            invokestatic freemarker.template.SimpleScalar.newInstanceOrNull:(Ljava/lang/String;)Lfreemarker/template/SimpleScalar;
            areturn
        34: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "pass"
            if_acmpne 36
        35: .line 230
            getstatic freemarker.core.Macro.DO_NOTHING_MACRO:Lfreemarker/core/Macro;
            areturn
        36: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "output_encoding"
            if_acmpeq 37
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "outputEncoding"
            if_acmpne 39
        37: .line 233
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getOutputEncoding:()Ljava/lang/String;
            astore 2 /* s */
        start local 2 // java.lang.String s
        38: .line 234
            aload 2 /* s */
            invokestatic freemarker.template.SimpleScalar.newInstanceOrNull:(Ljava/lang/String;)Lfreemarker/template/SimpleScalar;
            areturn
        end local 2 // java.lang.String s
        39: .line 236
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "url_escaping_charset"
            if_acmpeq 40
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "urlEscapingCharset"
            if_acmpne 42
        40: .line 237
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getURLEscapingCharset:()Ljava/lang/String;
            astore 2 /* s */
        start local 2 // java.lang.String s
        41: .line 238
            aload 2 /* s */
            invokestatic freemarker.template.SimpleScalar.newInstanceOrNull:(Ljava/lang/String;)Lfreemarker/template/SimpleScalar;
            areturn
        end local 2 // java.lang.String s
        42: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "error"
            if_acmpne 44
        43: .line 241
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentRecoveredErrorMessage:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        44: .line 243
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "now"
            if_acmpne 46
        45: .line 244
            new freemarker.template.SimpleDate
            dup
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            iconst_3
            invokespecial freemarker.template.SimpleDate.<init>:(Ljava/util/Date;I)V
            areturn
        46: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "version"
            if_acmpne 48
        47: .line 247
            new freemarker.template.SimpleScalar
            dup
            invokestatic freemarker.template.Configuration.getVersionNumber:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        48: .line 249
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "incompatible_improvements"
            if_acmpeq 49
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "incompatibleImprovements"
            if_acmpne 50
        49: .line 250
      StackMap locals:
      StackMap stack:
            new freemarker.template.SimpleScalar
            dup
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getConfiguration:()Lfreemarker/template/Configuration;
            invokevirtual freemarker.template.Configuration.getIncompatibleImprovements:()Lfreemarker/template/Version;
            invokevirtual freemarker.template.Version.toString:()Ljava/lang/String;
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            areturn
        50: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "get_optional_template"
            if_acmpne 52
        51: .line 253
            getstatic freemarker.core.GetOptionalTemplateMethod.INSTANCE:Lfreemarker/core/GetOptionalTemplateMethod;
            areturn
        52: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "getOptionalTemplate"
            if_acmpne 54
        53: .line 256
            getstatic freemarker.core.GetOptionalTemplateMethod.INSTANCE_CC:Lfreemarker/core/GetOptionalTemplateMethod;
            areturn
        54: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "caller_template_name"
            if_acmpeq 55
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            ldc "callerTemplateName"
            if_acmpne 70
        55: .line 259
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getCurrentMacroContext:()Lfreemarker/core/Macro$Context;
            astore 2 /* ctx */
        start local 2 // freemarker.core.Macro$Context ctx
        56: .line 260
            aload 2 /* ctx */
            ifnonnull 63
        57: .line 261
            new freemarker.template.TemplateException
            dup
        58: .line 262
            new java.lang.StringBuilder
            dup
            ldc "Can't get ."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " here, as there's no macro or function (that's "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        59: .line 263
            ldc "implemented in the template) call in context."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        60: .line 262
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        61: .line 263
            aload 1 /* env */
        62: .line 261
            invokespecial freemarker.template.TemplateException.<init>:(Ljava/lang/String;Lfreemarker/core/Environment;)V
            athrow
        63: .line 265
      StackMap locals: freemarker.core.Macro$Context
      StackMap stack:
            aload 2 /* ctx */
            getfield freemarker.core.Macro$Context.callPlace:Lfreemarker/core/TemplateObject;
            astore 3 /* callPlace */
        start local 3 // freemarker.core.TemplateObject callPlace
        64: .line 266
            aload 3 /* callPlace */
            ifnull 65
            aload 3 /* callPlace */
            invokevirtual freemarker.core.TemplateObject.getTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
            goto 66
      StackMap locals: freemarker.core.TemplateObject
      StackMap stack:
        65: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
        66: astore 4 /* name */
        start local 4 // java.lang.String name
        67: .line 267
            aload 4 /* name */
            ifnull 68
            new freemarker.template.SimpleScalar
            dup
            aload 4 /* name */
            invokespecial freemarker.template.SimpleScalar.<init>:(Ljava/lang/String;)V
            goto 69
      StackMap locals: java.lang.String
      StackMap stack:
        68: getstatic freemarker.template.TemplateScalarModel.EMPTY_STRING:Lfreemarker/template/TemplateModel;
      StackMap locals:
      StackMap stack: freemarker.template.TemplateModel
        69: areturn
        end local 4 // java.lang.String name
        end local 3 // freemarker.core.TemplateObject callPlace
        end local 2 // freemarker.core.Macro$Context ctx
        70: .line 270
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        71: .line 271
            ldc "Invalid special variable: "
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name:Ljava/lang/String;
        72: .line 270
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        end local 1 // freemarker.core.Environment env
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   73     0       this  Lfreemarker/core/BuiltinVariable;
            0   73     1        env  Lfreemarker/core/Environment;
           10   13     2        ctx  Lfreemarker/core/Macro$Context;
           38   39     2          s  Ljava/lang/String;
           41   42     2          s  Ljava/lang/String;
           56   70     2        ctx  Lfreemarker/core/Macro$Context;
           64   70     3  callPlace  Lfreemarker/core/TemplateObject;
           67   70     4       name  Ljava/lang/String;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
      Name  Flags
      env   

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltinVariable this
         0: .line 276
            new java.lang.StringBuilder
            dup
            ldc "."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name: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.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;

  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.BuiltinVariable this
         0: .line 281
            new java.lang.StringBuilder
            dup
            ldc "."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield freemarker.core.BuiltinVariable.name: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.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;

  java.lang.String getNodeTypeSymbol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltinVariable this
         0: .line 286
            aload 0 /* this */
            invokevirtual freemarker.core.BuiltinVariable.getCanonicalForm:()Ljava/lang/String;
            areturn
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;

  boolean isLiteral();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltinVariable this
         0: .line 291
            iconst_0
            ireturn
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;

  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=1, locals=4, args_size=4
        start local 0 // freemarker.core.BuiltinVariable 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 297
            aload 0 /* this */
            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.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lfreemarker/core/BuiltinVariable;
            0    1     1  replacedIdentifier  Ljava/lang/String;
            0    1     2         replacement  Lfreemarker/core/Expression;
            0    1     3    replacementState  Lfreemarker/core/Expression$ReplacemenetState;
    MethodParameters:
                    Name  Flags
      replacedIdentifier  
      replacement         
      replacementState    

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

  java.lang.Object getParameterValue(int);
    descriptor: (I)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.core.BuiltinVariable this
        start local 1 // int idx
         0: .line 324
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
        end local 1 // int idx
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;
            0    1     1   idx  I
    MethodParameters:
      Name  Flags
      idx   

  freemarker.core.ParameterRole getParameterRole(int);
    descriptor: (I)Lfreemarker/core/ParameterRole;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.core.BuiltinVariable this
        start local 1 // int idx
         0: .line 329
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
        end local 1 // int idx
        end local 0 // freemarker.core.BuiltinVariable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltinVariable;
            0    1     1   idx  I
    MethodParameters:
      Name  Flags
      idx   
}
SourceFile: "BuiltinVariable.java"
NestMembers:
  freemarker.core.BuiltinVariable$VarsHash
InnerClasses:
  VarsHash = freemarker.core.BuiltinVariable$VarsHash of freemarker.core.BuiltinVariable
  public Namespace = freemarker.core.Environment$Namespace of freemarker.core.Environment
  ReplacemenetState = freemarker.core.Expression$ReplacemenetState of freemarker.core.Expression
  Context = freemarker.core.Macro$Context of freemarker.core.Macro