class freemarker.core.BuiltInsWithParseTimeParameters$switch_BI extends freemarker.core.BuiltInWithParseTimeParameters
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.core.BuiltInsWithParseTimeParameters$switch_BI
  super_class: freemarker.core.BuiltInWithParseTimeParameters
{
  private java.util.List parameters;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
         0: .line 89
            aload 0 /* this */
            invokespecial freemarker.core.BuiltInWithParseTimeParameters.<init>:()V
            return
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;

  void bindToParameters(java.util.List, freemarker.core.Token, freemarker.core.Token);
    descriptor: (Ljava/util/List;Lfreemarker/core/Token;Lfreemarker/core/Token;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
        start local 1 // java.util.List parameters
        start local 2 // freemarker.core.Token openParen
        start local 3 // freemarker.core.Token closeParen
         0: .line 95
            aload 1 /* parameters */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpge 2
         1: .line 96
            aload 0 /* this */
            ldc "must have at least 2"
            aload 2 /* openParen */
            aload 3 /* closeParen */
            invokevirtual freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.newArgumentCountException:(Ljava/lang/String;Lfreemarker/core/Token;Lfreemarker/core/Token;)Lfreemarker/core/ParseException;
            athrow
         2: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* parameters */
            putfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
         3: .line 99
            return
        end local 3 // freemarker.core.Token closeParen
        end local 2 // freemarker.core.Token openParen
        end local 1 // java.util.List parameters
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;
            0    4     1  parameters  Ljava/util/List;
            0    4     2   openParen  Lfreemarker/core/Token;
            0    4     3  closeParen  Lfreemarker/core/Token;
    Exceptions:
      throws freemarker.core.ParseException
    MethodParameters:
            Name  Flags
      parameters  
      openParen   
      closeParen  

  protected java.util.List getArgumentsAsList();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
         0: .line 103
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            areturn
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;

  protected int getArgumentsCount();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
         0: .line 108
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ireturn
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;

  protected freemarker.core.Expression getArgumentParameterValue(int);
    descriptor: (I)Lfreemarker/core/Expression;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
        start local 1 // int argIdx
         0: .line 113
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            iload 1 /* argIdx */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.Expression
            areturn
        end local 1 // int argIdx
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;
            0    1     1  argIdx  I
    MethodParameters:
        Name  Flags
      argIdx  

  protected void cloneArguments(freemarker.core.Expression, java.lang.String, freemarker.core.Expression, freemarker.core.Expression$ReplacemenetState);
    descriptor: (Lfreemarker/core/Expression;Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
        start local 1 // freemarker.core.Expression clone
        start local 2 // java.lang.String replacedIdentifier
        start local 3 // freemarker.core.Expression replacement
        start local 4 // freemarker.core.Expression$ReplacemenetState replacementState
         0: .line 119
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* parametersClone */
        start local 5 // java.util.ArrayList parametersClone
         1: .line 120
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         2: goto 7
         3: .line 121
      StackMap locals: java.util.ArrayList int
      StackMap stack:
            aload 5 /* parametersClone */
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.Expression
         4: .line 122
            aload 2 /* replacedIdentifier */
            aload 3 /* replacement */
            aload 4 /* replacementState */
            invokevirtual freemarker.core.Expression.deepCloneWithIdentifierReplaced:(Ljava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression$ReplacemenetState;)Lfreemarker/core/Expression;
         5: .line 121
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         6: .line 120
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 6 /* i */
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 3
        end local 6 // int i
         8: .line 124
            aload 1 /* clone */
            checkcast freemarker.core.BuiltInsWithParseTimeParameters$switch_BI
            aload 5 /* parametersClone */
            putfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
         9: .line 125
            return
        end local 5 // java.util.ArrayList parametersClone
        end local 4 // freemarker.core.Expression$ReplacemenetState replacementState
        end local 3 // freemarker.core.Expression replacement
        end local 2 // java.lang.String replacedIdentifier
        end local 1 // freemarker.core.Expression clone
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   10     0                this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;
            0   10     1               clone  Lfreemarker/core/Expression;
            0   10     2  replacedIdentifier  Ljava/lang/String;
            0   10     3         replacement  Lfreemarker/core/Expression;
            0   10     4    replacementState  Lfreemarker/core/Expression$ReplacemenetState;
            1   10     5     parametersClone  Ljava/util/ArrayList;
            2    8     6                   i  I
    MethodParameters:
                    Name  Flags
      clone               
      replacedIdentifier  
      replacement         
      replacementState    

  freemarker.template.TemplateModel _eval(freemarker.core.Environment);
    descriptor: (Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
    flags: (0x0000) 
    Code:
      stack=12, locals=8, args_size=2
        start local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
        start local 1 // freemarker.core.Environment env
         0: .line 129
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.target:Lfreemarker/core/Expression;
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.evalToNonMissing:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 2 /* targetValue */
        start local 2 // freemarker.template.TemplateModel targetValue
         1: .line 131
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.parameters:Ljava/util/List;
            astore 3 /* parameters */
        start local 3 // java.util.List parameters
         2: .line 132
            aload 3 /* parameters */
            invokeinterface java.util.List.size:()I
            istore 4 /* paramCnt */
        start local 4 // int paramCnt
         3: .line 133
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 17
         5: .line 134
      StackMap locals: freemarker.core.BuiltInsWithParseTimeParameters$switch_BI freemarker.core.Environment freemarker.template.TemplateModel java.util.List int int
      StackMap stack:
            aload 3 /* parameters */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.Expression
            astore 6 /* caseExp */
        start local 6 // freemarker.core.Expression caseExp
         6: .line 135
            aload 6 /* caseExp */
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.evalToNonMissing:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 7 /* caseValue */
        start local 7 // freemarker.template.TemplateModel caseValue
         7: .line 137
            aload 2 /* targetValue */
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.target:Lfreemarker/core/Expression;
         8: .line 138
            iconst_1
            ldc "=="
         9: .line 139
            aload 7 /* caseValue */
            aload 6 /* caseExp */
        10: .line 140
            aload 0 /* this */
            iconst_1
        11: .line 141
            iconst_0
            iconst_0
            iconst_0
        12: .line 142
            aload 1 /* env */
        13: .line 136
            invokestatic freemarker.core.EvalUtil.compare:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ILjava/lang/String;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Lfreemarker/core/Expression;ZZZZLfreemarker/core/Environment;)Z
        14: .line 142
            ifeq 16
        15: .line 143
            aload 3 /* parameters */
            iload 5 /* i */
            iconst_1
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.Expression
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.evalToNonMissing:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            areturn
        end local 7 // freemarker.template.TemplateModel caseValue
        end local 6 // freemarker.core.Expression caseExp
        16: .line 133
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 2
      StackMap locals:
      StackMap stack:
        17: iload 5 /* i */
            iconst_1
            iadd
            iload 4 /* paramCnt */
            if_icmplt 5
        end local 5 // int i
        18: .line 147
            iload 4 /* paramCnt */
            iconst_2
            irem
            ifne 22
        19: .line 148
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.target:Lfreemarker/core/Expression;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        20: .line 149
            ldc "The value before ?"
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield freemarker.core.BuiltInsWithParseTimeParameters$switch_BI.key:Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc "(case1, value1, case2, value2, ...) didn't match any of the case parameters, and there was no default value parameter (an additional last parameter) eithter. "
        21: .line 148
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        22: .line 153
      StackMap locals:
      StackMap stack:
            aload 3 /* parameters */
            iload 4 /* paramCnt */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.Expression
            aload 1 /* env */
            invokevirtual freemarker.core.Expression.evalToNonMissing:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            areturn
        end local 4 // int paramCnt
        end local 3 // java.util.List parameters
        end local 2 // freemarker.template.TemplateModel targetValue
        end local 1 // freemarker.core.Environment env
        end local 0 // freemarker.core.BuiltInsWithParseTimeParameters$switch_BI this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lfreemarker/core/BuiltInsWithParseTimeParameters$switch_BI;
            0   23     1          env  Lfreemarker/core/Environment;
            1   23     2  targetValue  Lfreemarker/template/TemplateModel;
            2   23     3   parameters  Ljava/util/List;
            3   23     4     paramCnt  I
            4   18     5            i  I
            6   16     6      caseExp  Lfreemarker/core/Expression;
            7   16     7    caseValue  Lfreemarker/template/TemplateModel;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
      Name  Flags
      env   
}
SourceFile: "BuiltInsWithParseTimeParameters.java"
NestHost: freemarker.core.BuiltInsWithParseTimeParameters
InnerClasses:
  switch_BI = freemarker.core.BuiltInsWithParseTimeParameters$switch_BI of freemarker.core.BuiltInsWithParseTimeParameters
  ReplacemenetState = freemarker.core.Expression$ReplacemenetState of freemarker.core.Expression