public class freemarker.core.ArithmeticEngine$BigDecimalEngine extends freemarker.core.ArithmeticEngine
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: freemarker.core.ArithmeticEngine$BigDecimalEngine
  super_class: freemarker.core.ArithmeticEngine
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
         0: .line 114
            aload 0 /* this */
            invokespecial freemarker.core.ArithmeticEngine.<init>:()V
            return
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;

  public int compareNumbers(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 121
            aload 1 /* first */
            invokestatic freemarker.template.utility.NumberUtil.getSignum:(Ljava/lang/Number;)I
            istore 3 /* firstSignum */
        start local 3 // int firstSignum
         1: .line 122
            aload 2 /* second */
            invokestatic freemarker.template.utility.NumberUtil.getSignum:(Ljava/lang/Number;)I
            istore 4 /* secondSignum */
        start local 4 // int secondSignum
         2: .line 123
            iload 3 /* firstSignum */
            iload 4 /* secondSignum */
            if_icmpeq 7
         3: .line 124
            iload 3 /* firstSignum */
            iload 4 /* secondSignum */
            if_icmpge 4
            iconst_m1
            goto 6
      StackMap locals: int int
      StackMap stack:
         4: iload 3 /* firstSignum */
            iload 4 /* secondSignum */
            if_icmple 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: ireturn
         7: .line 125
      StackMap locals:
      StackMap stack:
            iload 3 /* firstSignum */
            ifne 9
            iload 4 /* secondSignum */
            ifne 9
         8: .line 126
            iconst_0
            ireturn
         9: .line 131
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 2 /* second */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpne 24
        10: .line 133
            aload 1 /* first */
            instanceof java.math.BigDecimal
            ifeq 12
        11: .line 134
            aload 1 /* first */
            checkcast java.math.BigDecimal
            aload 2 /* second */
            checkcast java.math.BigDecimal
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ireturn
        12: .line 137
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Integer
            ifeq 14
        13: .line 138
            aload 1 /* first */
            checkcast java.lang.Integer
            aload 2 /* second */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.compareTo:(Ljava/lang/Integer;)I
            ireturn
        14: .line 140
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Long
            ifeq 16
        15: .line 141
            aload 1 /* first */
            checkcast java.lang.Long
            aload 2 /* second */
            checkcast java.lang.Long
            invokevirtual java.lang.Long.compareTo:(Ljava/lang/Long;)I
            ireturn
        16: .line 143
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Double
            ifeq 18
        17: .line 144
            aload 1 /* first */
            checkcast java.lang.Double
            aload 2 /* second */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.compareTo:(Ljava/lang/Double;)I
            ireturn
        18: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Float
            ifeq 20
        19: .line 147
            aload 1 /* first */
            checkcast java.lang.Float
            aload 2 /* second */
            checkcast java.lang.Float
            invokevirtual java.lang.Float.compareTo:(Ljava/lang/Float;)I
            ireturn
        20: .line 149
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Byte
            ifeq 22
        21: .line 150
            aload 1 /* first */
            checkcast java.lang.Byte
            aload 2 /* second */
            checkcast java.lang.Byte
            invokevirtual java.lang.Byte.compareTo:(Ljava/lang/Byte;)I
            ireturn
        22: .line 152
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Short
            ifeq 24
        23: .line 153
            aload 1 /* first */
            checkcast java.lang.Short
            aload 2 /* second */
            checkcast java.lang.Short
            invokevirtual java.lang.Short.compareTo:(Ljava/lang/Short;)I
            ireturn
        24: .line 159
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Double
            ifeq 33
        25: .line 160
            aload 1 /* first */
            invokevirtual java.lang.Number.doubleValue:()D
            dstore 5 /* firstD */
        start local 5 // double firstD
        26: .line 161
            dload 5 /* firstD */
            invokestatic java.lang.Double.isInfinite:(D)Z
            ifeq 33
        27: .line 162
            aload 2 /* second */
            invokestatic freemarker.template.utility.NumberUtil.hasTypeThatIsKnownToNotSupportInfiniteAndNaN:(Ljava/lang/Number;)Z
            ifeq 31
        28: .line 163
            dload 5 /* firstD */
            ldc -Infinity
            dcmpl
            ifne 29
            iconst_m1
            goto 30
      StackMap locals: double
      StackMap stack:
        29: iconst_1
      StackMap locals:
      StackMap stack: int
        30: ireturn
        31: .line 165
      StackMap locals:
      StackMap stack:
            aload 2 /* second */
            instanceof java.lang.Float
            ifeq 33
        32: .line 166
            dload 5 /* firstD */
            aload 2 /* second */
            invokevirtual java.lang.Number.doubleValue:()D
            invokestatic java.lang.Double.compare:(DD)I
            ireturn
        end local 5 // double firstD
        33: .line 170
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Float
            ifeq 42
        34: .line 171
            aload 1 /* first */
            invokevirtual java.lang.Number.floatValue:()F
            fstore 5 /* firstF */
        start local 5 // float firstF
        35: .line 172
            fload 5 /* firstF */
            invokestatic java.lang.Float.isInfinite:(F)Z
            ifeq 42
        36: .line 173
            aload 2 /* second */
            invokestatic freemarker.template.utility.NumberUtil.hasTypeThatIsKnownToNotSupportInfiniteAndNaN:(Ljava/lang/Number;)Z
            ifeq 40
        37: .line 174
            fload 5 /* firstF */
            ldc -Infinity
            fcmpl
            ifne 38
            iconst_m1
            goto 39
      StackMap locals: float
      StackMap stack:
        38: iconst_1
      StackMap locals:
      StackMap stack: int
        39: ireturn
        40: .line 176
      StackMap locals:
      StackMap stack:
            aload 2 /* second */
            instanceof java.lang.Double
            ifeq 42
        41: .line 177
            fload 5 /* firstF */
            f2d
            aload 2 /* second */
            invokevirtual java.lang.Number.doubleValue:()D
            invokestatic java.lang.Double.compare:(DD)I
            ireturn
        end local 5 // float firstF
        42: .line 181
      StackMap locals:
      StackMap stack:
            aload 2 /* second */
            instanceof java.lang.Double
            ifeq 51
        43: .line 182
            aload 2 /* second */
            invokevirtual java.lang.Number.doubleValue:()D
            dstore 5 /* secondD */
        start local 5 // double secondD
        44: .line 183
            dload 5 /* secondD */
            invokestatic java.lang.Double.isInfinite:(D)Z
            ifeq 51
        45: .line 184
            aload 1 /* first */
            invokestatic freemarker.template.utility.NumberUtil.hasTypeThatIsKnownToNotSupportInfiniteAndNaN:(Ljava/lang/Number;)Z
            ifeq 49
        46: .line 185
            dload 5 /* secondD */
            ldc -Infinity
            dcmpl
            ifne 47
            iconst_1
            goto 48
      StackMap locals: double
      StackMap stack:
        47: iconst_m1
      StackMap locals:
      StackMap stack: int
        48: ireturn
        49: .line 187
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Float
            ifeq 51
        50: .line 188
            aload 1 /* first */
            invokevirtual java.lang.Number.doubleValue:()D
            dload 5 /* secondD */
            invokestatic java.lang.Double.compare:(DD)I
            ireturn
        end local 5 // double secondD
        51: .line 192
      StackMap locals:
      StackMap stack:
            aload 2 /* second */
            instanceof java.lang.Float
            ifeq 60
        52: .line 193
            aload 2 /* second */
            invokevirtual java.lang.Number.floatValue:()F
            fstore 5 /* secondF */
        start local 5 // float secondF
        53: .line 194
            fload 5 /* secondF */
            invokestatic java.lang.Float.isInfinite:(F)Z
            ifeq 60
        54: .line 195
            aload 1 /* first */
            invokestatic freemarker.template.utility.NumberUtil.hasTypeThatIsKnownToNotSupportInfiniteAndNaN:(Ljava/lang/Number;)Z
            ifeq 58
        55: .line 196
            fload 5 /* secondF */
            ldc -Infinity
            fcmpl
            ifne 56
            iconst_1
            goto 57
      StackMap locals: float
      StackMap stack:
        56: iconst_m1
      StackMap locals:
      StackMap stack: int
        57: ireturn
        58: .line 198
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            instanceof java.lang.Double
            ifeq 60
        59: .line 199
            aload 1 /* first */
            invokevirtual java.lang.Number.doubleValue:()D
            fload 5 /* secondF */
            f2d
            invokestatic java.lang.Double.compare:(DD)I
            ireturn
        end local 5 // float secondF
        60: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            aload 2 /* second */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ireturn
        end local 4 // int secondSignum
        end local 3 // int firstSignum
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   61     0          this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0   61     1         first  Ljava/lang/Number;
            0   61     2        second  Ljava/lang/Number;
            1   61     3   firstSignum  I
            2   61     4  secondSignum  I
           26   33     5        firstD  D
           35   42     5        firstF  F
           44   51     5       secondD  D
           53   60     5       secondF  F
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number add(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 210
            aload 1 /* first */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 3 /* left */
        start local 3 // java.math.BigDecimal left
         1: .line 211
            aload 2 /* second */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 4 /* right */
        start local 4 // java.math.BigDecimal right
         2: .line 212
            aload 3 /* left */
            aload 4 /* right */
            invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            areturn
        end local 4 // java.math.BigDecimal right
        end local 3 // java.math.BigDecimal left
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    3     1   first  Ljava/lang/Number;
            0    3     2  second  Ljava/lang/Number;
            1    3     3    left  Ljava/math/BigDecimal;
            2    3     4   right  Ljava/math/BigDecimal;
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number subtract(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 217
            aload 1 /* first */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 3 /* left */
        start local 3 // java.math.BigDecimal left
         1: .line 218
            aload 2 /* second */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 4 /* right */
        start local 4 // java.math.BigDecimal right
         2: .line 219
            aload 3 /* left */
            aload 4 /* right */
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            areturn
        end local 4 // java.math.BigDecimal right
        end local 3 // java.math.BigDecimal left
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    3     1   first  Ljava/lang/Number;
            0    3     2  second  Ljava/lang/Number;
            1    3     3    left  Ljava/math/BigDecimal;
            2    3     4   right  Ljava/math/BigDecimal;
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number multiply(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 224
            aload 1 /* first */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 3 /* left */
        start local 3 // java.math.BigDecimal left
         1: .line 225
            aload 2 /* second */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 4 /* right */
        start local 4 // java.math.BigDecimal right
         2: .line 226
            aload 3 /* left */
            aload 4 /* right */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 5 /* result */
        start local 5 // java.math.BigDecimal result
         3: .line 227
            aload 5 /* result */
            invokevirtual java.math.BigDecimal.scale:()I
            aload 0 /* this */
            getfield freemarker.core.ArithmeticEngine$BigDecimalEngine.maxScale:I
            if_icmple 5
         4: .line 228
            aload 5 /* result */
            aload 0 /* this */
            getfield freemarker.core.ArithmeticEngine$BigDecimalEngine.maxScale:I
            aload 0 /* this */
            getfield freemarker.core.ArithmeticEngine$BigDecimalEngine.roundingPolicy:I
            invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
            astore 5 /* result */
         5: .line 230
      StackMap locals: java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal
      StackMap stack:
            aload 5 /* result */
            areturn
        end local 5 // java.math.BigDecimal result
        end local 4 // java.math.BigDecimal right
        end local 3 // java.math.BigDecimal left
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    6     1   first  Ljava/lang/Number;
            0    6     2  second  Ljava/lang/Number;
            1    6     3    left  Ljava/math/BigDecimal;
            2    6     4   right  Ljava/math/BigDecimal;
            3    6     5  result  Ljava/math/BigDecimal;
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number divide(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 235
            aload 1 /* first */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 3 /* left */
        start local 3 // java.math.BigDecimal left
         1: .line 236
            aload 2 /* second */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimal:(Ljava/lang/Number;)Ljava/math/BigDecimal;
            astore 4 /* right */
        start local 4 // java.math.BigDecimal right
         2: .line 237
            aload 0 /* this */
            aload 3 /* left */
            aload 4 /* right */
            invokevirtual freemarker.core.ArithmeticEngine$BigDecimalEngine.divide:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            areturn
        end local 4 // java.math.BigDecimal right
        end local 3 // java.math.BigDecimal left
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    3     1   first  Ljava/lang/Number;
            0    3     2  second  Ljava/lang/Number;
            1    3     3    left  Ljava/math/BigDecimal;
            2    3     4   right  Ljava/math/BigDecimal;
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number modulus(java.lang.Number, java.lang.Number);
    descriptor: (Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.Number first
        start local 2 // java.lang.Number second
         0: .line 242
            aload 1 /* first */
            invokevirtual java.lang.Number.longValue:()J
            lstore 3 /* left */
        start local 3 // long left
         1: .line 243
            aload 2 /* second */
            invokevirtual java.lang.Number.longValue:()J
            lstore 5 /* right */
        start local 5 // long right
         2: .line 244
            lload 3 /* left */
            lload 5 /* right */
            lrem
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            areturn
        end local 5 // long right
        end local 3 // long left
        end local 2 // java.lang.Number second
        end local 1 // java.lang.Number first
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    3     1   first  Ljava/lang/Number;
            0    3     2  second  Ljava/lang/Number;
            1    3     3    left  J
            2    3     5   right  J
    MethodParameters:
        Name  Flags
      first   
      second  

  public java.lang.Number toNumber(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.lang.String s
         0: .line 249
            aload 1 /* s */
            invokestatic freemarker.core.ArithmeticEngine.toBigDecimalOrDouble:(Ljava/lang/String;)Ljava/lang/Number;
            areturn
        end local 1 // java.lang.String s
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    1     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  private java.math.BigDecimal divide(java.math.BigDecimal, java.math.BigDecimal);
    descriptor: (Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
        start local 1 // java.math.BigDecimal left
        start local 2 // java.math.BigDecimal right
         0: .line 253
            aload 1 /* left */
            invokevirtual java.math.BigDecimal.scale:()I
            istore 3 /* scale1 */
        start local 3 // int scale1
         1: .line 254
            aload 2 /* right */
            invokevirtual java.math.BigDecimal.scale:()I
            istore 4 /* scale2 */
        start local 4 // int scale2
         2: .line 255
            iload 3 /* scale1 */
            iload 4 /* scale2 */
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* scale */
        start local 5 // int scale
         3: .line 256
            aload 0 /* this */
            getfield freemarker.core.ArithmeticEngine$BigDecimalEngine.minScale:I
            iload 5 /* scale */
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* scale */
         4: .line 257
            aload 1 /* left */
            aload 2 /* right */
            iload 5 /* scale */
            aload 0 /* this */
            getfield freemarker.core.ArithmeticEngine$BigDecimalEngine.roundingPolicy:I
            invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;
            areturn
        end local 5 // int scale
        end local 4 // int scale2
        end local 3 // int scale1
        end local 2 // java.math.BigDecimal right
        end local 1 // java.math.BigDecimal left
        end local 0 // freemarker.core.ArithmeticEngine$BigDecimalEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lfreemarker/core/ArithmeticEngine$BigDecimalEngine;
            0    5     1    left  Ljava/math/BigDecimal;
            0    5     2   right  Ljava/math/BigDecimal;
            1    5     3  scale1  I
            2    5     4  scale2  I
            3    5     5   scale  I
    MethodParameters:
       Name  Flags
      left   
      right  
}
SourceFile: "ArithmeticEngine.java"
NestHost: freemarker.core.ArithmeticEngine
InnerClasses:
  public BigDecimalEngine = freemarker.core.ArithmeticEngine$BigDecimalEngine of freemarker.core.ArithmeticEngine