class freemarker.core.EvalUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.core.EvalUtil
  super_class: java.lang.Object
{
  static final int CMP_OP_EQUALS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int CMP_OP_NOT_EQUALS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int CMP_OP_LESS_THAN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static final int CMP_OP_GREATER_THAN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int CMP_OP_LESS_THAN_EQUALS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static final int CMP_OP_GREATER_THAN_EQUALS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  private static final java.lang.String VALUE_OF_THE_COMPARISON_IS_UNKNOWN_DATE_LIKE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "value of the comparison is a date-like value where it's not known if it's a date (no time part), time, or date-time, and thus can't be used in a comparison."

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.EvalUtil this
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // freemarker.core.EvalUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/EvalUtil;

  static java.lang.String modelToString(freemarker.template.TemplateScalarModel, freemarker.core.Expression, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // freemarker.template.TemplateScalarModel model
        start local 1 // freemarker.core.Expression expr
        start local 2 // freemarker.core.Environment env
         0: .line 59
            aload 0 /* model */
            invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
            astore 3 /* value */
        start local 3 // java.lang.String value
         1: .line 60
            aload 3 /* value */
            ifnonnull 6
         2: .line 61
            aload 2 /* env */
            ifnonnull 3
            invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
            astore 2 /* env */
         3: .line 62
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* env */
            ifnull 5
            aload 2 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 5
         4: .line 63
            ldc ""
            areturn
         5: .line 65
      StackMap locals:
      StackMap stack:
            ldc Ljava/lang/String;
            aload 0 /* model */
            aload 1 /* expr */
            invokestatic freemarker.core.EvalUtil.newModelHasStoredNullException:(Ljava/lang/Class;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;)Lfreemarker/template/TemplateModelException;
            athrow
         6: .line 68
      StackMap locals:
      StackMap stack:
            aload 3 /* value */
            areturn
        end local 3 // java.lang.String value
        end local 2 // freemarker.core.Environment env
        end local 1 // freemarker.core.Expression expr
        end local 0 // freemarker.template.TemplateScalarModel model
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  model  Lfreemarker/template/TemplateScalarModel;
            0    7     1   expr  Lfreemarker/core/Expression;
            0    7     2    env  Lfreemarker/core/Environment;
            1    7     3  value  Ljava/lang/String;
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
       Name  Flags
      model  
      expr   
      env    

  static java.lang.Number modelToNumber(freemarker.template.TemplateNumberModel, freemarker.core.Expression);
    descriptor: (Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // freemarker.template.TemplateNumberModel model
        start local 1 // freemarker.core.Expression expr
         0: .line 76
            aload 0 /* model */
            invokeinterface freemarker.template.TemplateNumberModel.getAsNumber:()Ljava/lang/Number;
            astore 2 /* value */
        start local 2 // java.lang.Number value
         1: .line 77
            aload 2 /* value */
            ifnonnull 2
            ldc Ljava/lang/Number;
            aload 0 /* model */
            aload 1 /* expr */
            invokestatic freemarker.core.EvalUtil.newModelHasStoredNullException:(Ljava/lang/Class;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;)Lfreemarker/template/TemplateModelException;
            athrow
         2: .line 78
      StackMap locals: java.lang.Number
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 2 // java.lang.Number value
        end local 1 // freemarker.core.Expression expr
        end local 0 // freemarker.template.TemplateNumberModel model
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  model  Lfreemarker/template/TemplateNumberModel;
            0    3     1   expr  Lfreemarker/core/Expression;
            1    3     2  value  Ljava/lang/Number;
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
       Name  Flags
      model  
      expr   

  static java.util.Date modelToDate(freemarker.template.TemplateDateModel, freemarker.core.Expression);
    descriptor: (Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;)Ljava/util/Date;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // freemarker.template.TemplateDateModel model
        start local 1 // freemarker.core.Expression expr
         0: .line 86
            aload 0 /* model */
            invokeinterface freemarker.template.TemplateDateModel.getAsDate:()Ljava/util/Date;
            astore 2 /* value */
        start local 2 // java.util.Date value
         1: .line 87
            aload 2 /* value */
            ifnonnull 2
            ldc Ljava/util/Date;
            aload 0 /* model */
            aload 1 /* expr */
            invokestatic freemarker.core.EvalUtil.newModelHasStoredNullException:(Ljava/lang/Class;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;)Lfreemarker/template/TemplateModelException;
            athrow
         2: .line 88
      StackMap locals: java.util.Date
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 2 // java.util.Date value
        end local 1 // freemarker.core.Expression expr
        end local 0 // freemarker.template.TemplateDateModel model
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  model  Lfreemarker/template/TemplateDateModel;
            0    3     1   expr  Lfreemarker/core/Expression;
            1    3     2  value  Ljava/util/Date;
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
       Name  Flags
      model  
      expr   

  static freemarker.template.TemplateModelException newModelHasStoredNullException(java.lang.Class, freemarker.template.TemplateModel, freemarker.core.Expression);
    descriptor: (Ljava/lang/Class;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;)Lfreemarker/template/TemplateModelException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // java.lang.Class expected
        start local 1 // freemarker.template.TemplateModel model
        start local 2 // freemarker.core.Expression expr
         0: .line 94
            new freemarker.core._TemplateModelException
            dup
            aload 2 /* expr */
         1: .line 95
            aload 0 /* expected */
            aload 1 /* model */
            invokestatic freemarker.core._TemplateModelException.modelHasStoredNullDescription:(Ljava/lang/Class;Lfreemarker/template/TemplateModel;)[Ljava/lang/Object;
         2: .line 94
            invokespecial freemarker.core._TemplateModelException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            areturn
        end local 2 // freemarker.core.Expression expr
        end local 1 // freemarker.template.TemplateModel model
        end local 0 // java.lang.Class expected
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  expected  Ljava/lang/Class;
            0    3     1     model  Lfreemarker/template/TemplateModel;
            0    3     2      expr  Lfreemarker/core/Expression;
    MethodParameters:
          Name  Flags
      expected  
      model     
      expr      

  static boolean compare(freemarker.core.Expression, int, java.lang.String, freemarker.core.Expression, freemarker.core.Expression, freemarker.core.Environment);
    descriptor: (Lfreemarker/core/Expression;ILjava/lang/String;Lfreemarker/core/Expression;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=12, locals=8, args_size=6
        start local 0 // freemarker.core.Expression leftExp
        start local 1 // int operator
        start local 2 // java.lang.String operatorString
        start local 3 // freemarker.core.Expression rightExp
        start local 4 // freemarker.core.Expression defaultBlamed
        start local 5 // freemarker.core.Environment env
         0: .line 113
            aload 0 /* leftExp */
            aload 5 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 6 /* ltm */
        start local 6 // freemarker.template.TemplateModel ltm
         1: .line 114
            aload 3 /* rightExp */
            aload 5 /* env */
            invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
            astore 7 /* rtm */
        start local 7 // freemarker.template.TemplateModel rtm
         2: .line 116
            aload 6 /* ltm */
            aload 0 /* leftExp */
         3: .line 117
            iload 1 /* operator */
            aload 2 /* operatorString */
         4: .line 118
            aload 7 /* rtm */
            aload 3 /* rightExp */
         5: .line 119
            aload 4 /* defaultBlamed */
            iconst_0
         6: .line 120
            iconst_0
            iconst_0
            iconst_0
         7: .line 121
            aload 5 /* env */
         8: .line 115
            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
            ireturn
        end local 7 // freemarker.template.TemplateModel rtm
        end local 6 // freemarker.template.TemplateModel ltm
        end local 5 // freemarker.core.Environment env
        end local 4 // freemarker.core.Expression defaultBlamed
        end local 3 // freemarker.core.Expression rightExp
        end local 2 // java.lang.String operatorString
        end local 1 // int operator
        end local 0 // freemarker.core.Expression leftExp
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0         leftExp  Lfreemarker/core/Expression;
            0    9     1        operator  I
            0    9     2  operatorString  Ljava/lang/String;
            0    9     3        rightExp  Lfreemarker/core/Expression;
            0    9     4   defaultBlamed  Lfreemarker/core/Expression;
            0    9     5             env  Lfreemarker/core/Environment;
            1    9     6             ltm  Lfreemarker/template/TemplateModel;
            2    9     7             rtm  Lfreemarker/template/TemplateModel;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
                Name  Flags
      leftExp         
      operator        
      operatorString  
      rightExp        
      defaultBlamed   
      env             

  static boolean compare(freemarker.template.TemplateModel, int, freemarker.template.TemplateModel, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;ILfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=12, locals=4, args_size=4
        start local 0 // freemarker.template.TemplateModel leftValue
        start local 1 // int operator
        start local 2 // freemarker.template.TemplateModel rightValue
        start local 3 // freemarker.core.Environment env
         0: .line 138
            aload 0 /* leftValue */
            aconst_null
         1: .line 139
            iload 1 /* operator */
            aconst_null
         2: .line 140
            aload 2 /* rightValue */
            aconst_null
         3: .line 141
            aconst_null
            iconst_0
         4: .line 142
            iconst_0
            iconst_0
            iconst_0
         5: .line 143
            aload 3 /* env */
         6: .line 137
            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
            ireturn
        end local 3 // freemarker.core.Environment env
        end local 2 // freemarker.template.TemplateModel rightValue
        end local 1 // int operator
        end local 0 // freemarker.template.TemplateModel leftValue
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0   leftValue  Lfreemarker/template/TemplateModel;
            0    7     1    operator  I
            0    7     2  rightValue  Lfreemarker/template/TemplateModel;
            0    7     3         env  Lfreemarker/core/Environment;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
            Name  Flags
      leftValue   
      operator    
      rightValue  
      env         

  static boolean compareLenient(freemarker.template.TemplateModel, int, freemarker.template.TemplateModel, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;ILfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=12, locals=4, args_size=4
        start local 0 // freemarker.template.TemplateModel leftValue
        start local 1 // int operator
        start local 2 // freemarker.template.TemplateModel rightValue
        start local 3 // freemarker.core.Environment env
         0: .line 155
            aload 0 /* leftValue */
            aconst_null
         1: .line 156
            iload 1 /* operator */
            aconst_null
         2: .line 157
            aload 2 /* rightValue */
            aconst_null
         3: .line 158
            aconst_null
            iconst_0
         4: .line 159
            iconst_1
            iconst_0
            iconst_0
         5: .line 160
            aload 3 /* env */
         6: .line 154
            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
            ireturn
        end local 3 // freemarker.core.Environment env
        end local 2 // freemarker.template.TemplateModel rightValue
        end local 1 // int operator
        end local 0 // freemarker.template.TemplateModel leftValue
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0   leftValue  Lfreemarker/template/TemplateModel;
            0    7     1    operator  I
            0    7     2  rightValue  Lfreemarker/template/TemplateModel;
            0    7     3         env  Lfreemarker/core/Environment;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
            Name  Flags
      leftValue   
      operator    
      rightValue  
      env         

  static boolean compare(freemarker.template.TemplateModel, freemarker.core.Expression, int, java.lang.String, freemarker.template.TemplateModel, freemarker.core.Expression, freemarker.core.Expression, boolean, boolean, boolean, boolean, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ILjava/lang/String;Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Lfreemarker/core/Expression;ZZZZLfreemarker/core/Environment;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=13, locals=19, args_size=12
        start local 0 // freemarker.template.TemplateModel leftValue
        start local 1 // freemarker.core.Expression leftExp
        start local 2 // int operator
        start local 3 // java.lang.String operatorString
        start local 4 // freemarker.template.TemplateModel rightValue
        start local 5 // freemarker.core.Expression rightExp
        start local 6 // freemarker.core.Expression defaultBlamed
        start local 7 // boolean quoteOperandsInErrors
        start local 8 // boolean typeMismatchMeansNotEqual
        start local 9 // boolean leftNullReturnsFalse
        start local 10 // boolean rightNullReturnsFalse
        start local 11 // freemarker.core.Environment env
         0: .line 190
            aload 0 /* leftValue */
            ifnonnull 11
         1: .line 191
            aload 11 /* env */
            ifnull 4
            aload 11 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 4
         2: .line 192
            getstatic freemarker.template.TemplateScalarModel.EMPTY_STRING:Lfreemarker/template/TemplateModel;
            astore 0 /* leftValue */
         3: .line 193
            goto 11
         4: .line 194
      StackMap locals:
      StackMap stack:
            iload 9 /* leftNullReturnsFalse */
            ifeq 6
         5: .line 195
            iconst_0
            ireturn
         6: .line 197
      StackMap locals:
      StackMap stack:
            aload 1 /* leftExp */
            ifnull 8
         7: .line 198
            aload 1 /* leftExp */
            aload 11 /* env */
            invokestatic freemarker.core.InvalidReferenceException.getInstance:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
            athrow
         8: .line 200
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
         9: .line 201
            ldc "The left operand of the comparison was undefined or null."
        10: .line 200
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;Ljava/lang/String;)V
            athrow
        11: .line 207
      StackMap locals:
      StackMap stack:
            aload 4 /* rightValue */
            ifnonnull 22
        12: .line 208
            aload 11 /* env */
            ifnull 15
            aload 11 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 15
        13: .line 209
            getstatic freemarker.template.TemplateScalarModel.EMPTY_STRING:Lfreemarker/template/TemplateModel;
            astore 4 /* rightValue */
        14: .line 210
            goto 22
        15: .line 211
      StackMap locals:
      StackMap stack:
            iload 10 /* rightNullReturnsFalse */
            ifeq 17
        16: .line 212
            iconst_0
            ireturn
        17: .line 214
      StackMap locals:
      StackMap stack:
            aload 5 /* rightExp */
            ifnull 19
        18: .line 215
            aload 5 /* rightExp */
            aload 11 /* env */
            invokestatic freemarker.core.InvalidReferenceException.getInstance:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
            athrow
        19: .line 217
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
        20: .line 218
            ldc "The right operand of the comparison was undefined or null."
        21: .line 217
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;Ljava/lang/String;)V
            athrow
        22: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* leftValue */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 37
            aload 4 /* rightValue */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 37
        23: .line 226
            aload 0 /* leftValue */
            checkcast freemarker.template.TemplateNumberModel
            aload 1 /* leftExp */
            invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
            astore 13 /* leftNum */
        start local 13 // java.lang.Number leftNum
        24: .line 227
            aload 4 /* rightValue */
            checkcast freemarker.template.TemplateNumberModel
            aload 5 /* rightExp */
            invokestatic freemarker.core.EvalUtil.modelToNumber:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;)Ljava/lang/Number;
            astore 14 /* rightNum */
        start local 14 // java.lang.Number rightNum
        25: .line 229
            aload 11 /* env */
            ifnull 27
        26: .line 230
            aload 11 /* env */
            invokevirtual freemarker.core.Environment.getArithmeticEngine:()Lfreemarker/core/ArithmeticEngine;
            goto 30
        27: .line 231
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top java.lang.Number java.lang.Number
      StackMap stack:
            aload 1 /* leftExp */
            ifnull 29
        28: .line 232
            aload 1 /* leftExp */
            invokevirtual freemarker.core.Expression.getTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getArithmeticEngine:()Lfreemarker/core/ArithmeticEngine;
            goto 30
        29: .line 233
      StackMap locals:
      StackMap stack:
            getstatic freemarker.core.ArithmeticEngine.BIGDECIMAL_ENGINE:Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
        30: .line 228
      StackMap locals:
      StackMap stack: freemarker.core.ArithmeticEngine
            astore 15 /* ae */
        start local 15 // freemarker.core.ArithmeticEngine ae
        31: .line 235
            aload 15 /* ae */
            aload 13 /* leftNum */
            aload 14 /* rightNum */
            invokevirtual freemarker.core.ArithmeticEngine.compareNumbers:(Ljava/lang/Number;Ljava/lang/Number;)I
            istore 12 /* cmpResult */
        start local 12 // int cmpResult
        32: .line 236
            goto 113
        end local 12 // int cmpResult
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top java.lang.Number java.lang.Number freemarker.core.ArithmeticEngine
      StackMap stack: java.lang.RuntimeException
        33: astore 16 /* e */
        start local 16 // java.lang.RuntimeException e
        34: .line 237
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 16 /* e */
            aload 11 /* env */
        35: .line 238
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Unexpected error while comparing two numbers: "
            aastore
            dup
            iconst_1
            aload 16 /* e */
            aastore
        36: .line 237
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Ljava/lang/Throwable;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        end local 16 // java.lang.RuntimeException e
        end local 15 // freemarker.core.ArithmeticEngine ae
        end local 14 // java.lang.Number rightNum
        end local 13 // java.lang.Number leftNum
        37: .line 240
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack:
            aload 0 /* leftValue */
            instanceof freemarker.template.TemplateDateModel
            ifeq 64
            aload 4 /* rightValue */
            instanceof freemarker.template.TemplateDateModel
            ifeq 64
        38: .line 241
            aload 0 /* leftValue */
            checkcast freemarker.template.TemplateDateModel
            astore 13 /* leftDateModel */
        start local 13 // freemarker.template.TemplateDateModel leftDateModel
        39: .line 242
            aload 4 /* rightValue */
            checkcast freemarker.template.TemplateDateModel
            astore 14 /* rightDateModel */
        start local 14 // freemarker.template.TemplateDateModel rightDateModel
        40: .line 244
            aload 13 /* leftDateModel */
            invokeinterface freemarker.template.TemplateDateModel.getDateType:()I
            istore 15 /* leftDateType */
        start local 15 // int leftDateType
        41: .line 245
            aload 14 /* rightDateModel */
            invokeinterface freemarker.template.TemplateDateModel.getDateType:()I
            istore 16 /* rightDateType */
        start local 16 // int rightDateType
        42: .line 247
            iload 15 /* leftDateType */
            ifeq 43
            iload 16 /* rightDateType */
            ifne 54
        43: .line 250
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top freemarker.template.TemplateDateModel freemarker.template.TemplateDateModel int int
      StackMap stack:
            iload 15 /* leftDateType */
            ifne 47
        44: .line 251
            ldc "left"
            astore 17 /* sideName */
        start local 17 // java.lang.String sideName
        45: .line 252
            aload 1 /* leftExp */
            astore 18 /* sideExp */
        start local 18 // freemarker.core.Expression sideExp
        46: .line 253
            goto 49
        end local 18 // freemarker.core.Expression sideExp
        end local 17 // java.lang.String sideName
        47: .line 254
      StackMap locals:
      StackMap stack:
            ldc "right"
            astore 17 /* sideName */
        start local 17 // java.lang.String sideName
        48: .line 255
            aload 5 /* rightExp */
            astore 18 /* sideExp */
        start local 18 // freemarker.core.Expression sideExp
        49: .line 258
      StackMap locals: java.lang.String freemarker.core.Expression
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 18 /* sideExp */
            ifnull 50
            aload 18 /* sideExp */
            goto 51
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top freemarker.template.TemplateDateModel freemarker.template.TemplateDateModel int int java.lang.String freemarker.core.Expression
      StackMap stack: new 49 new 49
        50: aload 6 /* defaultBlamed */
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top freemarker.template.TemplateDateModel freemarker.template.TemplateDateModel int int java.lang.String freemarker.core.Expression
      StackMap stack: new 49 new 49 freemarker.core.Expression
        51: aload 11 /* env */
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        52: .line 259
            ldc "The "
            aastore
            dup
            iconst_1
            aload 17 /* sideName */
            aastore
            dup
            iconst_2
            ldc " "
            aastore
            dup
            iconst_3
            ldc "value of the comparison is a date-like value where it's not known if it's a date (no time part), time, or date-time, and thus can't be used in a comparison."
        53: .line 258
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        end local 18 // freemarker.core.Expression sideExp
        end local 17 // java.lang.String sideName
        54: .line 262
      StackMap locals:
      StackMap stack:
            iload 15 /* leftDateType */
            iload 16 /* rightDateType */
            if_icmpeq 60
        55: .line 264
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        56: .line 265
            ldc "Can't compare dates of different types. Left date type is "
            aastore
            dup
            iconst_1
        57: .line 266
            getstatic freemarker.template.TemplateDateModel.TYPE_NAMES:Ljava/util/List;
            iload 15 /* leftDateType */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aastore
            dup
            iconst_2
            ldc ", right date type is "
            aastore
            dup
            iconst_3
        58: .line 267
            getstatic freemarker.template.TemplateDateModel.TYPE_NAMES:Ljava/util/List;
            iload 16 /* rightDateType */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aastore
            dup
            iconst_4
            ldc "."
        59: .line 264
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        60: .line 270
      StackMap locals:
      StackMap stack:
            aload 13 /* leftDateModel */
            aload 1 /* leftExp */
            invokestatic freemarker.core.EvalUtil.modelToDate:(Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;)Ljava/util/Date;
            astore 17 /* leftDate */
        start local 17 // java.util.Date leftDate
        61: .line 271
            aload 14 /* rightDateModel */
            aload 5 /* rightExp */
            invokestatic freemarker.core.EvalUtil.modelToDate:(Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;)Ljava/util/Date;
            astore 18 /* rightDate */
        start local 18 // java.util.Date rightDate
        62: .line 272
            aload 17 /* leftDate */
            aload 18 /* rightDate */
            invokevirtual java.util.Date.compareTo:(Ljava/util/Date;)I
            istore 12 /* cmpResult */
        end local 18 // java.util.Date rightDate
        end local 17 // java.util.Date leftDate
        end local 16 // int rightDateType
        end local 15 // int leftDateType
        end local 14 // freemarker.template.TemplateDateModel rightDateModel
        end local 13 // freemarker.template.TemplateDateModel leftDateModel
        start local 12 // int cmpResult
        63: .line 273
            goto 113
        end local 12 // int cmpResult
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack:
        64: aload 0 /* leftValue */
            instanceof freemarker.template.TemplateScalarModel
            ifeq 73
            aload 4 /* rightValue */
            instanceof freemarker.template.TemplateScalarModel
            ifeq 73
        65: .line 274
            iload 2 /* operator */
            iconst_1
            if_icmpeq 69
            iload 2 /* operator */
            iconst_2
            if_icmpeq 69
        66: .line 275
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        67: .line 276
            ldc "Can't use operator \""
            aastore
            dup
            iconst_1
            iload 2 /* operator */
            aload 3 /* operatorString */
            invokestatic freemarker.core.EvalUtil.cmpOpToString:(ILjava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc "\" on string values."
        68: .line 275
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        69: .line 278
      StackMap locals:
      StackMap stack:
            aload 0 /* leftValue */
            checkcast freemarker.template.TemplateScalarModel
            aload 1 /* leftExp */
            aload 11 /* env */
            invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 13 /* leftString */
        start local 13 // java.lang.String leftString
        70: .line 279
            aload 4 /* rightValue */
            checkcast freemarker.template.TemplateScalarModel
            aload 5 /* rightExp */
            aload 11 /* env */
            invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 14 /* rightString */
        start local 14 // java.lang.String rightString
        71: .line 281
            aload 11 /* env */
            invokevirtual freemarker.core.Environment.getCollator:()Ljava/text/Collator;
            aload 13 /* leftString */
            aload 14 /* rightString */
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            istore 12 /* cmpResult */
        end local 14 // java.lang.String rightString
        end local 13 // java.lang.String leftString
        start local 12 // int cmpResult
        72: .line 282
            goto 113
        end local 12 // int cmpResult
      StackMap locals:
      StackMap stack:
        73: aload 0 /* leftValue */
            instanceof freemarker.template.TemplateBooleanModel
            ifeq 86
            aload 4 /* rightValue */
            instanceof freemarker.template.TemplateBooleanModel
            ifeq 86
        74: .line 283
            iload 2 /* operator */
            iconst_1
            if_icmpeq 78
            iload 2 /* operator */
            iconst_2
            if_icmpeq 78
        75: .line 284
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        76: .line 285
            ldc "Can't use operator \""
            aastore
            dup
            iconst_1
            iload 2 /* operator */
            aload 3 /* operatorString */
            invokestatic freemarker.core.EvalUtil.cmpOpToString:(ILjava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc "\" on boolean values."
        77: .line 284
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        78: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* leftValue */
            checkcast freemarker.template.TemplateBooleanModel
            invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
            istore 13 /* leftBool */
        start local 13 // boolean leftBool
        79: .line 288
            aload 4 /* rightValue */
            checkcast freemarker.template.TemplateBooleanModel
            invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
            istore 14 /* rightBool */
        start local 14 // boolean rightBool
        80: .line 289
            iload 13 /* leftBool */
            ifeq 81
            iconst_1
            goto 82
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top int int
      StackMap stack:
        81: iconst_0
      StackMap locals:
      StackMap stack: int
        82: iload 14 /* rightBool */
            ifeq 83
            iconst_1
            goto 84
      StackMap locals:
      StackMap stack: int
        83: iconst_0
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment top int int
      StackMap stack: int int
        84: isub
            istore 12 /* cmpResult */
        end local 14 // boolean rightBool
        end local 13 // boolean leftBool
        start local 12 // int cmpResult
        85: .line 290
            goto 113
        end local 12 // int cmpResult
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack:
        86: aload 11 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 91
        87: .line 291
            aload 1 /* leftExp */
            aload 11 /* env */
            invokevirtual freemarker.core.Expression.evalAndCoerceToPlainText:(Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 13 /* leftSting */
        start local 13 // java.lang.String leftSting
        88: .line 292
            aload 5 /* rightExp */
            aload 11 /* env */
            invokevirtual freemarker.core.Expression.evalAndCoerceToPlainText:(Lfreemarker/core/Environment;)Ljava/lang/String;
            astore 14 /* rightString */
        start local 14 // java.lang.String rightString
        89: .line 293
            aload 11 /* env */
            invokevirtual freemarker.core.Environment.getCollator:()Ljava/text/Collator;
            aload 13 /* leftSting */
            aload 14 /* rightString */
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            istore 12 /* cmpResult */
        end local 14 // java.lang.String rightString
        end local 13 // java.lang.String leftSting
        start local 12 // int cmpResult
        90: .line 294
            goto 113
        end local 12 // int cmpResult
        91: .line 295
      StackMap locals:
      StackMap stack:
            iload 8 /* typeMismatchMeansNotEqual */
            ifeq 96
        92: .line 296
            iload 2 /* operator */
            iconst_1
            if_icmpne 94
        93: .line 297
            iconst_0
            ireturn
        94: .line 298
      StackMap locals:
      StackMap stack:
            iload 2 /* operator */
            iconst_2
            if_icmpne 96
        95: .line 299
            iconst_1
            ireturn
        96: .line 303
      StackMap locals:
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 6 /* defaultBlamed */
            aload 11 /* env */
            bipush 12
            anewarray java.lang.Object
            dup
            iconst_0
        97: .line 304
            ldc "Can't compare values of these types. "
            aastore
            dup
            iconst_1
        98: .line 305
            ldc "Allowed comparisons are between two numbers, two strings, two dates, or two booleans.\n"
            aastore
            dup
            iconst_2
        99: .line 306
            ldc "Left hand operand "
            aastore
            dup
            iconst_3
       100: .line 307
            iload 7 /* quoteOperandsInErrors */
            ifeq 102
            aload 1 /* leftExp */
            ifnull 102
       101: .line 308
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "("
            aastore
            dup
            iconst_1
            new freemarker.core._DelayedGetCanonicalForm
            dup
            aload 1 /* leftExp */
            invokespecial freemarker.core._DelayedGetCanonicalForm.<init>:(Lfreemarker/core/TemplateObject;)V
            aastore
            dup
            iconst_2
            ldc ") value "
            aastore
            goto 103
       102: .line 309
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack: new 96 new 96 freemarker.core.Expression freemarker.core.Environment java.lang.Object[] java.lang.Object[] int
            ldc ""
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack: new 96 new 96 freemarker.core.Expression freemarker.core.Environment java.lang.Object[] java.lang.Object[] int java.io.Serializable
       103: aastore
            dup
            iconst_4
       104: .line 310
            ldc "is "
            aastore
            dup
            iconst_5
            new freemarker.core._DelayedAOrAn
            dup
            new freemarker.core._DelayedFTLTypeDescription
            dup
            aload 0 /* leftValue */
            invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
            invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            bipush 6
            ldc ".\n"
            aastore
            dup
            bipush 7
       105: .line 311
            ldc "Right hand operand "
            aastore
            dup
            bipush 8
       106: .line 312
            iload 7 /* quoteOperandsInErrors */
            ifeq 108
            aload 5 /* rightExp */
            ifnull 108
       107: .line 313
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "("
            aastore
            dup
            iconst_1
            new freemarker.core._DelayedGetCanonicalForm
            dup
            aload 5 /* rightExp */
            invokespecial freemarker.core._DelayedGetCanonicalForm.<init>:(Lfreemarker/core/TemplateObject;)V
            aastore
            dup
            iconst_2
            ldc ") value "
            aastore
            goto 109
       108: .line 314
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack: new 96 new 96 freemarker.core.Expression freemarker.core.Environment java.lang.Object[] java.lang.Object[] int
            ldc ""
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.template.TemplateModel freemarker.core.Expression freemarker.core.Expression int int int int freemarker.core.Environment
      StackMap stack: new 96 new 96 freemarker.core.Expression freemarker.core.Environment java.lang.Object[] java.lang.Object[] int java.io.Serializable
       109: aastore
            dup
            bipush 9
       110: .line 315
            ldc "is "
            aastore
            dup
            bipush 10
            new freemarker.core._DelayedAOrAn
            dup
            new freemarker.core._DelayedFTLTypeDescription
            dup
            aload 4 /* rightValue */
            invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
            invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            bipush 11
       111: .line 316
            ldc "."
       112: .line 303
            aastore
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;[Ljava/lang/Object;)V
            athrow
        start local 12 // int cmpResult
       113: .line 319
      StackMap locals: int
      StackMap stack:
            iload 2 /* operator */
            tableswitch { // 1 - 6
                    1: 114
                    2: 116
                    3: 118
                    4: 120
                    5: 122
                    6: 124
              default: 126
          }
       114: .line 320
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            ifne 115
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       115: iconst_0
            ireturn
       116: .line 321
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            ifeq 117
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       117: iconst_0
            ireturn
       118: .line 322
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            ifge 119
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       119: iconst_0
            ireturn
       120: .line 323
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            ifle 121
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       121: iconst_0
            ireturn
       122: .line 324
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            ifgt 123
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       123: iconst_0
            ireturn
       124: .line 325
      StackMap locals:
      StackMap stack:
            iload 12 /* cmpResult */
            iflt 125
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
       125: iconst_0
            ireturn
       126: .line 326
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported comparator operator code: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* operator */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial freemarker.core.BugException.<init>:(Ljava/lang/String;)V
            athrow
        end local 12 // int cmpResult
        end local 11 // freemarker.core.Environment env
        end local 10 // boolean rightNullReturnsFalse
        end local 9 // boolean leftNullReturnsFalse
        end local 8 // boolean typeMismatchMeansNotEqual
        end local 7 // boolean quoteOperandsInErrors
        end local 6 // freemarker.core.Expression defaultBlamed
        end local 5 // freemarker.core.Expression rightExp
        end local 4 // freemarker.template.TemplateModel rightValue
        end local 3 // java.lang.String operatorString
        end local 2 // int operator
        end local 1 // freemarker.core.Expression leftExp
        end local 0 // freemarker.template.TemplateModel leftValue
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0  127     0                  leftValue  Lfreemarker/template/TemplateModel;
            0  127     1                    leftExp  Lfreemarker/core/Expression;
            0  127     2                   operator  I
            0  127     3             operatorString  Ljava/lang/String;
            0  127     4                 rightValue  Lfreemarker/template/TemplateModel;
            0  127     5                   rightExp  Lfreemarker/core/Expression;
            0  127     6              defaultBlamed  Lfreemarker/core/Expression;
            0  127     7      quoteOperandsInErrors  Z
            0  127     8  typeMismatchMeansNotEqual  Z
            0  127     9       leftNullReturnsFalse  Z
            0  127    10      rightNullReturnsFalse  Z
            0  127    11                        env  Lfreemarker/core/Environment;
           32   33    12                  cmpResult  I
           63   64    12                  cmpResult  I
           72   73    12                  cmpResult  I
           85   86    12                  cmpResult  I
           90   91    12                  cmpResult  I
          113  127    12                  cmpResult  I
           24   37    13                    leftNum  Ljava/lang/Number;
           25   37    14                   rightNum  Ljava/lang/Number;
           31   37    15                         ae  Lfreemarker/core/ArithmeticEngine;
           34   37    16                          e  Ljava/lang/RuntimeException;
           39   63    13              leftDateModel  Lfreemarker/template/TemplateDateModel;
           40   63    14             rightDateModel  Lfreemarker/template/TemplateDateModel;
           41   63    15               leftDateType  I
           42   63    16              rightDateType  I
           45   47    17                   sideName  Ljava/lang/String;
           48   54    17                   sideName  Ljava/lang/String;
           46   47    18                    sideExp  Lfreemarker/core/Expression;
           49   54    18                    sideExp  Lfreemarker/core/Expression;
           61   63    17                   leftDate  Ljava/util/Date;
           62   63    18                  rightDate  Ljava/util/Date;
           70   72    13                 leftString  Ljava/lang/String;
           71   72    14                rightString  Ljava/lang/String;
           79   85    13                   leftBool  Z
           80   85    14                  rightBool  Z
           88   90    13                  leftSting  Ljava/lang/String;
           89   90    14                rightString  Ljava/lang/String;
      Exception table:
        from    to  target  type
          31    32      33  Class java.lang.RuntimeException
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
                           Name  Flags
      leftValue                  
      leftExp                    
      operator                   
      operatorString             
      rightValue                 
      rightExp                   
      defaultBlamed              
      quoteOperandsInErrors      
      typeMismatchMeansNotEqual  
      leftNullReturnsFalse       
      rightNullReturnsFalse      
      env                        

  private static java.lang.String cmpOpToString(int, java.lang.String);
    descriptor: (ILjava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // int operator
        start local 1 // java.lang.String operatorString
         0: .line 331
            aload 1 /* operatorString */
            ifnull 2
         1: .line 332
            aload 1 /* operatorString */
            areturn
         2: .line 334
      StackMap locals:
      StackMap stack:
            iload 0 /* operator */
            tableswitch { // 1 - 6
                    1: 3
                    2: 4
                    3: 5
                    4: 6
                    5: 7
                    6: 8
              default: 9
          }
         3: .line 335
      StackMap locals:
      StackMap stack:
            ldc "equals"
            areturn
         4: .line 336
      StackMap locals:
      StackMap stack:
            ldc "not-equals"
            areturn
         5: .line 337
      StackMap locals:
      StackMap stack:
            ldc "less-than"
            areturn
         6: .line 338
      StackMap locals:
      StackMap stack:
            ldc "greater-than"
            areturn
         7: .line 339
      StackMap locals:
      StackMap stack:
            ldc "less-than-equals"
            areturn
         8: .line 340
      StackMap locals:
      StackMap stack:
            ldc "greater-than-equals"
            areturn
         9: .line 341
      StackMap locals:
      StackMap stack:
            ldc "???"
            areturn
        end local 1 // java.lang.String operatorString
        end local 0 // int operator
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0        operator  I
            0   10     1  operatorString  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      operator        
      operatorString  

  static java.lang.Object coerceModelToStringOrMarkup(freemarker.template.TemplateModel, freemarker.core.Expression, java.lang.String, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // freemarker.template.TemplateModel tm
        start local 1 // freemarker.core.Expression exp
        start local 2 // java.lang.String seqTip
        start local 3 // freemarker.core.Environment env
         0: .line 358
            aload 0 /* tm */
            aload 1 /* exp */
            iconst_0
            aload 2 /* seqTip */
            aload 3 /* env */
            invokestatic freemarker.core.EvalUtil.coerceModelToStringOrMarkup:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
            areturn
        end local 3 // freemarker.core.Environment env
        end local 2 // java.lang.String seqTip
        end local 1 // freemarker.core.Expression exp
        end local 0 // freemarker.template.TemplateModel tm
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0      tm  Lfreemarker/template/TemplateModel;
            0    1     1     exp  Lfreemarker/core/Expression;
            0    1     2  seqTip  Ljava/lang/String;
            0    1     3     env  Lfreemarker/core/Environment;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
        Name  Flags
      tm      
      exp     
      seqTip  
      env     

  static java.lang.Object coerceModelToStringOrMarkup(freemarker.template.TemplateModel, freemarker.core.Expression, boolean, java.lang.String, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;ZLjava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=5
        start local 0 // freemarker.template.TemplateModel tm
        start local 1 // freemarker.core.Expression exp
        start local 2 // boolean returnNullOnNonCoercableType
        start local 3 // java.lang.String seqTip
        start local 4 // freemarker.core.Environment env
         0: .line 370
            aload 0 /* tm */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 7
         1: .line 371
            aload 0 /* tm */
            checkcast freemarker.template.TemplateNumberModel
            astore 5 /* tnm */
        start local 5 // freemarker.template.TemplateNumberModel tnm
         2: .line 372
            aload 4 /* env */
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.getTemplateNumberFormat:(Lfreemarker/core/Expression;Z)Lfreemarker/core/TemplateNumberFormat;
            astore 6 /* format */
        start local 6 // freemarker.core.TemplateNumberFormat format
         3: .line 374
            aload 6 /* format */
            aload 5 /* tnm */
            invokevirtual freemarker.core.TemplateNumberFormat.format:(Lfreemarker/template/TemplateNumberModel;)Ljava/lang/Object;
            invokestatic freemarker.core.EvalUtil.assertFormatResultNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
         4: areturn
         5: .line 375
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.core.Environment freemarker.template.TemplateNumberModel freemarker.core.TemplateNumberFormat
      StackMap stack: freemarker.core.TemplateValueFormatException
            astore 7 /* e */
        start local 7 // freemarker.core.TemplateValueFormatException e
         6: .line 376
            aload 6 /* format */
            aload 1 /* exp */
            aload 7 /* e */
            iconst_0
            invokestatic freemarker.core._MessageUtil.newCantFormatNumberException:(Lfreemarker/core/TemplateNumberFormat;Lfreemarker/core/Expression;Lfreemarker/core/TemplateValueFormatException;Z)Lfreemarker/template/TemplateException;
            athrow
        end local 7 // freemarker.core.TemplateValueFormatException e
        end local 6 // freemarker.core.TemplateNumberFormat format
        end local 5 // freemarker.template.TemplateNumberModel tnm
         7: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            instanceof freemarker.template.TemplateDateModel
            ifeq 14
         8: .line 379
            aload 0 /* tm */
            checkcast freemarker.template.TemplateDateModel
            astore 5 /* tdm */
        start local 5 // freemarker.template.TemplateDateModel tdm
         9: .line 380
            aload 4 /* env */
            aload 5 /* tdm */
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.getTemplateDateFormat:(Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;Z)Lfreemarker/core/TemplateDateFormat;
            astore 6 /* format */
        start local 6 // freemarker.core.TemplateDateFormat format
        10: .line 382
            aload 6 /* format */
            aload 5 /* tdm */
            invokevirtual freemarker.core.TemplateDateFormat.format:(Lfreemarker/template/TemplateDateModel;)Ljava/lang/Object;
            invokestatic freemarker.core.EvalUtil.assertFormatResultNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
        11: areturn
        12: .line 383
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression int java.lang.String freemarker.core.Environment freemarker.template.TemplateDateModel freemarker.core.TemplateDateFormat
      StackMap stack: freemarker.core.TemplateValueFormatException
            astore 7 /* e */
        start local 7 // freemarker.core.TemplateValueFormatException e
        13: .line 384
            aload 6 /* format */
            aload 1 /* exp */
            aload 7 /* e */
            iconst_0
            invokestatic freemarker.core._MessageUtil.newCantFormatDateException:(Lfreemarker/core/TemplateDateFormat;Lfreemarker/core/Expression;Lfreemarker/core/TemplateValueFormatException;Z)Lfreemarker/template/TemplateException;
            athrow
        end local 7 // freemarker.core.TemplateValueFormatException e
        end local 6 // freemarker.core.TemplateDateFormat format
        end local 5 // freemarker.template.TemplateDateModel tdm
        14: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            instanceof freemarker.core.TemplateMarkupOutputModel
            ifeq 16
        15: .line 387
            aload 0 /* tm */
            areturn
        16: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            aload 1 /* exp */
            aload 3 /* seqTip */
            iconst_1
            iload 2 /* returnNullOnNonCoercableType */
            aload 4 /* env */
            invokestatic freemarker.core.EvalUtil.coerceModelToTextualCommon:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;ZZLfreemarker/core/Environment;)Ljava/lang/String;
            areturn
        end local 4 // freemarker.core.Environment env
        end local 3 // java.lang.String seqTip
        end local 2 // boolean returnNullOnNonCoercableType
        end local 1 // freemarker.core.Expression exp
        end local 0 // freemarker.template.TemplateModel tm
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   17     0                            tm  Lfreemarker/template/TemplateModel;
            0   17     1                           exp  Lfreemarker/core/Expression;
            0   17     2  returnNullOnNonCoercableType  Z
            0   17     3                        seqTip  Ljava/lang/String;
            0   17     4                           env  Lfreemarker/core/Environment;
            2    7     5                           tnm  Lfreemarker/template/TemplateNumberModel;
            3    7     6                        format  Lfreemarker/core/TemplateNumberFormat;
            6    7     7                             e  Lfreemarker/core/TemplateValueFormatException;
            9   14     5                           tdm  Lfreemarker/template/TemplateDateModel;
           10   14     6                        format  Lfreemarker/core/TemplateDateFormat;
           13   14     7                             e  Lfreemarker/core/TemplateValueFormatException;
      Exception table:
        from    to  target  type
           3     4       5  Class freemarker.core.TemplateValueFormatException
          10    11      12  Class freemarker.core.TemplateValueFormatException
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
                              Name  Flags
      tm                            
      exp                           
      returnNullOnNonCoercableType  
      seqTip                        
      env                           

  static java.lang.String coerceModelToStringOrUnsupportedMarkup(freemarker.template.TemplateModel, freemarker.core.Expression, java.lang.String, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // freemarker.template.TemplateModel tm
        start local 1 // freemarker.core.Expression exp
        start local 2 // java.lang.String seqTip
        start local 3 // freemarker.core.Environment env
         0: .line 405
            aload 0 /* tm */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 7
         1: .line 406
            aload 0 /* tm */
            checkcast freemarker.template.TemplateNumberModel
            astore 4 /* tnm */
        start local 4 // freemarker.template.TemplateNumberModel tnm
         2: .line 407
            aload 3 /* env */
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.getTemplateNumberFormat:(Lfreemarker/core/Expression;Z)Lfreemarker/core/TemplateNumberFormat;
            astore 5 /* format */
        start local 5 // freemarker.core.TemplateNumberFormat format
         3: .line 409
            aload 5 /* format */
            aload 4 /* tnm */
            invokevirtual freemarker.core.TemplateNumberFormat.format:(Lfreemarker/template/TemplateNumberModel;)Ljava/lang/Object;
            aload 1 /* exp */
            aload 3 /* env */
            invokestatic freemarker.core.EvalUtil.ensureFormatResultString:(Ljava/lang/Object;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
         4: areturn
         5: .line 410
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression java.lang.String freemarker.core.Environment freemarker.template.TemplateNumberModel freemarker.core.TemplateNumberFormat
      StackMap stack: freemarker.core.TemplateValueFormatException
            astore 6 /* e */
        start local 6 // freemarker.core.TemplateValueFormatException e
         6: .line 411
            aload 5 /* format */
            aload 1 /* exp */
            aload 6 /* e */
            iconst_0
            invokestatic freemarker.core._MessageUtil.newCantFormatNumberException:(Lfreemarker/core/TemplateNumberFormat;Lfreemarker/core/Expression;Lfreemarker/core/TemplateValueFormatException;Z)Lfreemarker/template/TemplateException;
            athrow
        end local 6 // freemarker.core.TemplateValueFormatException e
        end local 5 // freemarker.core.TemplateNumberFormat format
        end local 4 // freemarker.template.TemplateNumberModel tnm
         7: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            instanceof freemarker.template.TemplateDateModel
            ifeq 14
         8: .line 414
            aload 0 /* tm */
            checkcast freemarker.template.TemplateDateModel
            astore 4 /* tdm */
        start local 4 // freemarker.template.TemplateDateModel tdm
         9: .line 415
            aload 3 /* env */
            aload 4 /* tdm */
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.getTemplateDateFormat:(Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;Z)Lfreemarker/core/TemplateDateFormat;
            astore 5 /* format */
        start local 5 // freemarker.core.TemplateDateFormat format
        10: .line 417
            aload 5 /* format */
            aload 4 /* tdm */
            invokevirtual freemarker.core.TemplateDateFormat.format:(Lfreemarker/template/TemplateDateModel;)Ljava/lang/Object;
            aload 1 /* exp */
            aload 3 /* env */
            invokestatic freemarker.core.EvalUtil.ensureFormatResultString:(Ljava/lang/Object;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
        11: areturn
        12: .line 418
      StackMap locals: freemarker.template.TemplateModel freemarker.core.Expression java.lang.String freemarker.core.Environment freemarker.template.TemplateDateModel freemarker.core.TemplateDateFormat
      StackMap stack: freemarker.core.TemplateValueFormatException
            astore 6 /* e */
        start local 6 // freemarker.core.TemplateValueFormatException e
        13: .line 419
            aload 5 /* format */
            aload 1 /* exp */
            aload 6 /* e */
            iconst_0
            invokestatic freemarker.core._MessageUtil.newCantFormatDateException:(Lfreemarker/core/TemplateDateFormat;Lfreemarker/core/Expression;Lfreemarker/core/TemplateValueFormatException;Z)Lfreemarker/template/TemplateException;
            athrow
        end local 6 // freemarker.core.TemplateValueFormatException e
        end local 5 // freemarker.core.TemplateDateFormat format
        end local 4 // freemarker.template.TemplateDateModel tdm
        14: .line 422
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            aload 1 /* exp */
            aload 2 /* seqTip */
            iconst_0
            iconst_0
            aload 3 /* env */
            invokestatic freemarker.core.EvalUtil.coerceModelToTextualCommon:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;ZZLfreemarker/core/Environment;)Ljava/lang/String;
            areturn
        end local 3 // freemarker.core.Environment env
        end local 2 // java.lang.String seqTip
        end local 1 // freemarker.core.Expression exp
        end local 0 // freemarker.template.TemplateModel tm
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0      tm  Lfreemarker/template/TemplateModel;
            0   15     1     exp  Lfreemarker/core/Expression;
            0   15     2  seqTip  Ljava/lang/String;
            0   15     3     env  Lfreemarker/core/Environment;
            2    7     4     tnm  Lfreemarker/template/TemplateNumberModel;
            3    7     5  format  Lfreemarker/core/TemplateNumberFormat;
            6    7     6       e  Lfreemarker/core/TemplateValueFormatException;
            9   14     4     tdm  Lfreemarker/template/TemplateDateModel;
           10   14     5  format  Lfreemarker/core/TemplateDateFormat;
           13   14     6       e  Lfreemarker/core/TemplateValueFormatException;
      Exception table:
        from    to  target  type
           3     4       5  Class freemarker.core.TemplateValueFormatException
          10    11      12  Class freemarker.core.TemplateValueFormatException
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
        Name  Flags
      tm      
      exp     
      seqTip  
      env     

  static java.lang.String coerceModelToPlainText(freemarker.template.TemplateModel, freemarker.core.Expression, java.lang.String, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;Lfreemarker/core/Environment;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // freemarker.template.TemplateModel tm
        start local 1 // freemarker.core.Expression exp
        start local 2 // java.lang.String seqTip
        start local 3 // freemarker.core.Environment env
         0: .line 437
            aload 0 /* tm */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 2
         1: .line 438
            aload 3 /* env */
            aload 0 /* tm */
            checkcast freemarker.template.TemplateNumberModel
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.formatNumberToPlainText:(Lfreemarker/template/TemplateNumberModel;Lfreemarker/core/Expression;Z)Ljava/lang/String;
            invokestatic freemarker.core.EvalUtil.assertFormatResultNotNull:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         2: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            instanceof freemarker.template.TemplateDateModel
            ifeq 4
         3: .line 440
            aload 3 /* env */
            aload 0 /* tm */
            checkcast freemarker.template.TemplateDateModel
            aload 1 /* exp */
            iconst_0
            invokevirtual freemarker.core.Environment.formatDateToPlainText:(Lfreemarker/template/TemplateDateModel;Lfreemarker/core/Expression;Z)Ljava/lang/String;
            invokestatic freemarker.core.EvalUtil.assertFormatResultNotNull:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         4: .line 442
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            aload 1 /* exp */
            aload 2 /* seqTip */
            iconst_0
            iconst_0
            aload 3 /* env */
            invokestatic freemarker.core.EvalUtil.coerceModelToTextualCommon:(Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;ZZLfreemarker/core/Environment;)Ljava/lang/String;
            areturn
        end local 3 // freemarker.core.Environment env
        end local 2 // java.lang.String seqTip
        end local 1 // freemarker.core.Expression exp
        end local 0 // freemarker.template.TemplateModel tm
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0      tm  Lfreemarker/template/TemplateModel;
            0    5     1     exp  Lfreemarker/core/Expression;
            0    5     2  seqTip  Ljava/lang/String;
            0    5     3     env  Lfreemarker/core/Environment;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
        Name  Flags
      tm      
      exp     
      seqTip  
      env     

  private static java.lang.String coerceModelToTextualCommon(freemarker.template.TemplateModel, freemarker.core.Expression, java.lang.String, boolean, boolean, freemarker.core.Environment);
    descriptor: (Lfreemarker/template/TemplateModel;Lfreemarker/core/Expression;Ljava/lang/String;ZZLfreemarker/core/Environment;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // freemarker.template.TemplateModel tm
        start local 1 // freemarker.core.Expression exp
        start local 2 // java.lang.String seqHint
        start local 3 // boolean supportsTOM
        start local 4 // boolean returnNullOnNonCoercableType
        start local 5 // freemarker.core.Environment env
         0: .line 460
            aload 0 /* tm */
            instanceof freemarker.template.TemplateScalarModel
            ifeq 2
         1: .line 461
            aload 0 /* tm */
            checkcast freemarker.template.TemplateScalarModel
            aload 1 /* exp */
            aload 5 /* env */
            invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
            areturn
         2: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            ifnonnull 11
         3: .line 463
            aload 5 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 5
         4: .line 464
            ldc ""
            areturn
         5: .line 466
      StackMap locals:
      StackMap stack:
            aload 1 /* exp */
            ifnull 7
         6: .line 467
            aload 1 /* exp */
            aload 5 /* env */
            invokestatic freemarker.core.InvalidReferenceException.getInstance:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
            athrow
         7: .line 469
      StackMap locals:
      StackMap stack:
            new freemarker.core.InvalidReferenceException
            dup
         8: .line 470
            ldc "Null/missing value (no more informatoin avilable)"
         9: .line 471
            aload 5 /* env */
        10: .line 469
            invokespecial freemarker.core.InvalidReferenceException.<init>:(Ljava/lang/String;Lfreemarker/core/Environment;)V
            athrow
        11: .line 474
      StackMap locals:
      StackMap stack:
            aload 0 /* tm */
            instanceof freemarker.template.TemplateBooleanModel
            ifeq 27
        12: .line 478
            aload 0 /* tm */
            checkcast freemarker.template.TemplateBooleanModel
            invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
            istore 6 /* booleanValue */
        start local 6 // boolean booleanValue
        13: .line 479
            aload 5 /* env */
            invokevirtual freemarker.core.Environment.getClassicCompatibleAsInt:()I
            istore 7 /* compatMode */
        start local 7 // int compatMode
        14: .line 480
            iload 7 /* compatMode */
            ifne 16
        15: .line 481
            aload 5 /* env */
            iload 6 /* booleanValue */
            iconst_0
            invokevirtual freemarker.core.Environment.formatBoolean:(ZZ)Ljava/lang/String;
            areturn
        16: .line 483
      StackMap locals: int int
      StackMap stack:
            iload 7 /* compatMode */
            iconst_1
            if_icmpne 20
        17: .line 484
            iload 6 /* booleanValue */
            ifeq 18
            ldc "true"
            goto 19
      StackMap locals:
      StackMap stack:
        18: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
        19: areturn
        20: .line 485
      StackMap locals:
      StackMap stack:
            iload 7 /* compatMode */
            iconst_2
            if_icmpne 26
        21: .line 486
            aload 0 /* tm */
            instanceof freemarker.ext.beans.BeanModel
            ifeq 23
        22: .line 488
            aload 0 /* tm */
            checkcast freemarker.ext.beans.BeanModel
            invokestatic freemarker.ext.beans._BeansAPI.getAsClassicCompatibleString:(Lfreemarker/ext/beans/BeanModel;)Ljava/lang/String;
            areturn
        23: .line 490
      StackMap locals:
      StackMap stack:
            iload 6 /* booleanValue */
            ifeq 24
            ldc "true"
            goto 25
      StackMap locals:
      StackMap stack:
        24: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
        25: areturn
        26: .line 493
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported classic_compatible variation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* compatMode */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial freemarker.core.BugException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // int compatMode
        end local 6 // boolean booleanValue
        27: .line 497
      StackMap locals:
      StackMap stack:
            aload 5 /* env */
            invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
            ifeq 29
            aload 0 /* tm */
            instanceof freemarker.ext.beans.BeanModel
            ifeq 29
        28: .line 498
            aload 0 /* tm */
            checkcast freemarker.ext.beans.BeanModel
            invokestatic freemarker.ext.beans._BeansAPI.getAsClassicCompatibleString:(Lfreemarker/ext/beans/BeanModel;)Ljava/lang/String;
            areturn
        29: .line 500
      StackMap locals:
      StackMap stack:
            iload 4 /* returnNullOnNonCoercableType */
            ifeq 31
        30: .line 501
            aconst_null
            areturn
        31: .line 503
      StackMap locals:
      StackMap stack:
            aload 2 /* seqHint */
            ifnull 35
            aload 0 /* tm */
            instanceof freemarker.template.TemplateSequenceModel
            ifne 32
            aload 0 /* tm */
            instanceof freemarker.template.TemplateCollectionModel
            ifeq 35
        32: .line 504
      StackMap locals:
      StackMap stack:
            iload 3 /* supportsTOM */
            ifeq 34
        33: .line 505
            new freemarker.core.NonStringOrTemplateOutputException
            dup
            aload 1 /* exp */
            aload 0 /* tm */
            aload 2 /* seqHint */
            aload 5 /* env */
            invokespecial freemarker.core.NonStringOrTemplateOutputException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Ljava/lang/String;Lfreemarker/core/Environment;)V
            athrow
        34: .line 507
      StackMap locals:
      StackMap stack:
            new freemarker.core.NonStringException
            dup
            aload 1 /* exp */
            aload 0 /* tm */
            aload 2 /* seqHint */
            aload 5 /* env */
            invokespecial freemarker.core.NonStringException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Ljava/lang/String;Lfreemarker/core/Environment;)V
            athrow
        35: .line 510
      StackMap locals:
      StackMap stack:
            iload 3 /* supportsTOM */
            ifeq 37
        36: .line 511
            new freemarker.core.NonStringOrTemplateOutputException
            dup
            aload 1 /* exp */
            aload 0 /* tm */
            aload 5 /* env */
            invokespecial freemarker.core.NonStringOrTemplateOutputException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
            athrow
        37: .line 513
      StackMap locals:
      StackMap stack:
            new freemarker.core.NonStringException
            dup
            aload 1 /* exp */
            aload 0 /* tm */
            aload 5 /* env */
            invokespecial freemarker.core.NonStringException.<init>:(Lfreemarker/core/Expression;Lfreemarker/template/TemplateModel;Lfreemarker/core/Environment;)V
            athrow
        end local 5 // freemarker.core.Environment env
        end local 4 // boolean returnNullOnNonCoercableType
        end local 3 // boolean supportsTOM
        end local 2 // java.lang.String seqHint
        end local 1 // freemarker.core.Expression exp
        end local 0 // freemarker.template.TemplateModel tm
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   38     0                            tm  Lfreemarker/template/TemplateModel;
            0   38     1                           exp  Lfreemarker/core/Expression;
            0   38     2                       seqHint  Ljava/lang/String;
            0   38     3                   supportsTOM  Z
            0   38     4  returnNullOnNonCoercableType  Z
            0   38     5                           env  Lfreemarker/core/Environment;
           13   27     6                  booleanValue  Z
           14   27     7                    compatMode  I
    Exceptions:
      throws freemarker.template.TemplateModelException, freemarker.core.InvalidReferenceException, freemarker.template.TemplateException, freemarker.core.NonStringOrTemplateOutputException, freemarker.core.NonStringException
    MethodParameters:
                              Name  Flags
      tm                            
      exp                           
      seqHint                       
      supportsTOM                   
      returnNullOnNonCoercableType  
      env                           

  private static java.lang.String ensureFormatResultString(java.lang.Object, freemarker.core.Expression, freemarker.core.Environment);
    descriptor: (Ljava/lang/Object;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // java.lang.Object formatResult
        start local 1 // freemarker.core.Expression exp
        start local 2 // freemarker.core.Environment env
         0: .line 521
            aload 0 /* formatResult */
            instanceof java.lang.String
            ifeq 2
         1: .line 522
            aload 0 /* formatResult */
            checkcast java.lang.String
            areturn
         2: .line 525
      StackMap locals:
      StackMap stack:
            aload 0 /* formatResult */
            invokestatic freemarker.core.EvalUtil.assertFormatResultNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 527
            aload 0 /* formatResult */
            checkcast freemarker.core.TemplateMarkupOutputModel
            astore 3 /* mo */
        start local 3 // freemarker.core.TemplateMarkupOutputModel mo
         4: .line 528
            new freemarker.core._ErrorDescriptionBuilder
            dup
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 529
            ldc "Value was formatted to convert it to string, but the result was markup of ouput format "
            aastore
            dup
            iconst_1
         6: .line 530
            new freemarker.core._DelayedJQuote
            dup
            aload 3 /* mo */
            invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
            invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            iconst_2
            ldc "."
         7: .line 528
            aastore
            invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
         8: .line 531
            ldc "Use value?string to force formatting to plain text."
            invokevirtual freemarker.core._ErrorDescriptionBuilder.tip:(Ljava/lang/String;)Lfreemarker/core/_ErrorDescriptionBuilder;
         9: .line 532
            aload 1 /* exp */
            invokevirtual freemarker.core._ErrorDescriptionBuilder.blame:(Lfreemarker/core/Expression;)Lfreemarker/core/_ErrorDescriptionBuilder;
        10: .line 528
            astore 4 /* desc */
        start local 4 // freemarker.core._ErrorDescriptionBuilder desc
        11: .line 533
            new freemarker.core.NonStringException
            dup
            aconst_null
            aload 4 /* desc */
            invokespecial freemarker.core.NonStringException.<init>:(Lfreemarker/core/Environment;Lfreemarker/core/_ErrorDescriptionBuilder;)V
            athrow
        end local 4 // freemarker.core._ErrorDescriptionBuilder desc
        end local 3 // freemarker.core.TemplateMarkupOutputModel mo
        end local 2 // freemarker.core.Environment env
        end local 1 // freemarker.core.Expression exp
        end local 0 // java.lang.Object formatResult
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0  formatResult  Ljava/lang/Object;
            0   12     1           exp  Lfreemarker/core/Expression;
            0   12     2           env  Lfreemarker/core/Environment;
            4   12     3            mo  Lfreemarker/core/TemplateMarkupOutputModel;
           11   12     4          desc  Lfreemarker/core/_ErrorDescriptionBuilder;
    Exceptions:
      throws freemarker.core.NonStringException
    MethodParameters:
              Name  Flags
      formatResult  
      exp           
      env           

  static java.lang.String assertFormatResultNotNull(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String r
         0: .line 537
            aload 0 /* r */
            ifnull 2
         1: .line 538
            aload 0 /* r */
            areturn
         2: .line 540
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
            ldc "TemplateValueFormatter result can't be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String r
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     r  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      r     

  static java.lang.Object assertFormatResultNotNull(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object r
         0: .line 544
            aload 0 /* r */
            ifnull 2
         1: .line 545
            aload 0 /* r */
            areturn
         2: .line 547
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
            ldc "TemplateValueFormatter result can't be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Object r
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     r  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      r     

  static freemarker.core.TemplateMarkupOutputModel concatMarkupOutputs(freemarker.core.TemplateObject, freemarker.core.TemplateMarkupOutputModel, freemarker.core.TemplateMarkupOutputModel);
    descriptor: (Lfreemarker/core/TemplateObject;Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // freemarker.core.TemplateObject parent
        start local 1 // freemarker.core.TemplateMarkupOutputModel leftMO
        start local 2 // freemarker.core.TemplateMarkupOutputModel rightMO
         0: .line 552
            aload 1 /* leftMO */
            invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
            astore 3 /* leftOF */
        start local 3 // freemarker.core.MarkupOutputFormat leftOF
         1: .line 553
            aload 2 /* rightMO */
            invokeinterface freemarker.core.TemplateMarkupOutputModel.getOutputFormat:()Lfreemarker/core/MarkupOutputFormat;
            astore 4 /* rightOF */
        start local 4 // freemarker.core.MarkupOutputFormat rightOF
         2: .line 554
            aload 4 /* rightOF */
            aload 3 /* leftOF */
            if_acmpeq 16
         3: .line 557
            aload 4 /* rightOF */
            aload 2 /* rightMO */
            invokevirtual freemarker.core.MarkupOutputFormat.getSourcePlainText:(Lfreemarker/core/TemplateMarkupOutputModel;)Ljava/lang/String;
            dup
            astore 5 /* rightPT */
        start local 5 // java.lang.String rightPT
         4: ifnull 6
         5: .line 558
            aload 3 /* leftOF */
            aload 1 /* leftMO */
            aload 3 /* leftOF */
            aload 5 /* rightPT */
            invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
            invokevirtual freemarker.core.MarkupOutputFormat.concat:(Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
            areturn
         6: .line 559
      StackMap locals: freemarker.core.MarkupOutputFormat freemarker.core.MarkupOutputFormat java.lang.String
      StackMap stack:
            aload 3 /* leftOF */
            aload 1 /* leftMO */
            invokevirtual freemarker.core.MarkupOutputFormat.getSourcePlainText:(Lfreemarker/core/TemplateMarkupOutputModel;)Ljava/lang/String;
            dup
            astore 6 /* leftPT */
        start local 6 // java.lang.String leftPT
         7: ifnull 9
         8: .line 560
            aload 4 /* rightOF */
            aload 4 /* rightOF */
            aload 6 /* leftPT */
            invokevirtual freemarker.core.MarkupOutputFormat.fromPlainTextByEscaping:(Ljava/lang/String;)Lfreemarker/core/TemplateMarkupOutputModel;
            aload 2 /* rightMO */
            invokevirtual freemarker.core.MarkupOutputFormat.concat:(Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
            areturn
         9: .line 562
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Concatenation left hand operand is in "
            aastore
            dup
            iconst_1
            new freemarker.core._DelayedToString
            dup
            aload 3 /* leftOF */
            invokespecial freemarker.core._DelayedToString.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            iconst_2
        10: .line 563
            ldc " format, while the right hand operand is in "
            aastore
            dup
            iconst_3
            new freemarker.core._DelayedToString
            dup
            aload 4 /* rightOF */
            invokespecial freemarker.core._DelayedToString.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            iconst_4
        11: .line 564
            ldc ". Conversion to common format wasn't possible."
            aastore
        12: .line 562
            astore 7 /* message */
        start local 7 // java.lang.Object[] message
        13: .line 565
            aload 0 /* parent */
            instanceof freemarker.core.Expression
            ifeq 15
        14: .line 566
            new freemarker.core._MiscTemplateException
            dup
            aload 0 /* parent */
            checkcast freemarker.core.Expression
            aload 7 /* message */
            invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Expression;[Ljava/lang/Object;)V
            athrow
        15: .line 568
      StackMap locals: java.lang.Object[]
      StackMap stack:
            new freemarker.core._MiscTemplateException
            dup
            aload 7 /* message */
            invokespecial freemarker.core._MiscTemplateException.<init>:([Ljava/lang/Object;)V
            athrow
        end local 7 // java.lang.Object[] message
        end local 6 // java.lang.String leftPT
        end local 5 // java.lang.String rightPT
        16: .line 572
      StackMap locals:
      StackMap stack:
            aload 3 /* leftOF */
            aload 1 /* leftMO */
            aload 2 /* rightMO */
            invokevirtual freemarker.core.MarkupOutputFormat.concat:(Lfreemarker/core/TemplateMarkupOutputModel;Lfreemarker/core/TemplateMarkupOutputModel;)Lfreemarker/core/TemplateMarkupOutputModel;
            areturn
        end local 4 // freemarker.core.MarkupOutputFormat rightOF
        end local 3 // freemarker.core.MarkupOutputFormat leftOF
        end local 2 // freemarker.core.TemplateMarkupOutputModel rightMO
        end local 1 // freemarker.core.TemplateMarkupOutputModel leftMO
        end local 0 // freemarker.core.TemplateObject parent
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0   parent  Lfreemarker/core/TemplateObject;
            0   17     1   leftMO  Lfreemarker/core/TemplateMarkupOutputModel;
            0   17     2  rightMO  Lfreemarker/core/TemplateMarkupOutputModel;
            1   17     3   leftOF  Lfreemarker/core/MarkupOutputFormat;
            2   17     4  rightOF  Lfreemarker/core/MarkupOutputFormat;
            4   16     5  rightPT  Ljava/lang/String;
            7   16     6   leftPT  Ljava/lang/String;
           13   16     7  message  [Ljava/lang/Object;
    Exceptions:
      throws freemarker.template.TemplateException
    MethodParameters:
         Name  Flags
      parent   
      leftMO   
      rightMO  

  static freemarker.core.ArithmeticEngine getArithmeticEngine(freemarker.core.Environment, freemarker.core.TemplateObject);
    descriptor: (Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;)Lfreemarker/core/ArithmeticEngine;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // freemarker.core.Environment env
        start local 1 // freemarker.core.TemplateObject tObj
         0: .line 580
            aload 0 /* env */
            ifnull 2
         1: .line 581
            aload 0 /* env */
            invokevirtual freemarker.core.Environment.getArithmeticEngine:()Lfreemarker/core/ArithmeticEngine;
            goto 3
         2: .line 582
      StackMap locals:
      StackMap stack:
            aload 1 /* tObj */
            invokevirtual freemarker.core.TemplateObject.getTemplate:()Lfreemarker/template/Template;
            invokevirtual freemarker.template.Template.getParserConfiguration:()Lfreemarker/core/ParserConfiguration;
            invokeinterface freemarker.core.ParserConfiguration.getArithmeticEngine:()Lfreemarker/core/ArithmeticEngine;
         3: .line 580
      StackMap locals:
      StackMap stack: freemarker.core.ArithmeticEngine
            areturn
        end local 1 // freemarker.core.TemplateObject tObj
        end local 0 // freemarker.core.Environment env
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   env  Lfreemarker/core/Environment;
            0    4     1  tObj  Lfreemarker/core/TemplateObject;
    MethodParameters:
      Name  Flags
      env   
      tObj  

  static boolean shouldWrapUncheckedException(java.lang.Throwable, freemarker.core.Environment);
    descriptor: (Ljava/lang/Throwable;Lfreemarker/core/Environment;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Throwable e
        start local 1 // freemarker.core.Environment env
         0: .line 586
            ldc Lfreemarker/core/FlowControlException;
            aload 0 /* e */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 587
            iconst_0
            ireturn
         2: .line 589
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokevirtual freemarker.core.Environment.getWrapUncheckedExceptions:()Z
            ifeq 4
         3: .line 590
            iconst_1
            ireturn
         4: .line 591
      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_27:I
            if_icmplt 12
         5: .line 596
            aload 0 /* e */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 2 /* c */
        start local 2 // java.lang.Class c
         6: .line 597
            aload 2 /* c */
            ldc Ljava/lang/NullPointerException;
            if_acmpeq 11
         7: .line 598
            aload 2 /* c */
            ldc Ljava/lang/ClassCastException;
            if_acmpeq 11
         8: .line 599
            aload 2 /* c */
            ldc Ljava/lang/IndexOutOfBoundsException;
            if_acmpeq 11
         9: .line 600
            aload 2 /* c */
            ldc Ljava/lang/reflect/InvocationTargetException;
            if_acmpeq 11
        10: .line 597
            iconst_0
            ireturn
      StackMap locals: java.lang.Class
      StackMap stack:
        11: iconst_1
            ireturn
        end local 2 // java.lang.Class c
        12: .line 602
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // freemarker.core.Environment env
        end local 0 // java.lang.Throwable e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0     e  Ljava/lang/Throwable;
            0   13     1   env  Lfreemarker/core/Environment;
            6   12     2     c  Ljava/lang/Class<+Ljava/lang/Throwable;>;
    MethodParameters:
      Name  Flags
      e     
      env   
}
SourceFile: "EvalUtil.java"