class freemarker.core.BuiltInsForNumbers
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.core.BuiltInsForNumbers
  super_class: java.lang.Object
{
  private static final java.math.BigDecimal BIG_DECIMAL_ONE;
    descriptor: Ljava/math/BigDecimal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigDecimal BIG_DECIMAL_LONG_MIN;
    descriptor: Ljava/math/BigDecimal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigDecimal BIG_DECIMAL_LONG_MAX;
    descriptor: Ljava/math/BigDecimal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger BIG_INTEGER_LONG_MIN;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger BIG_INTEGER_LONG_MAX;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 310
            new java.math.BigDecimal
            dup
            ldc "1"
            invokespecial java.math.BigDecimal.<init>:(Ljava/lang/String;)V
            putstatic freemarker.core.BuiltInsForNumbers.BIG_DECIMAL_ONE:Ljava/math/BigDecimal;
         1: .line 311
            ldc -9223372036854775808
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            putstatic freemarker.core.BuiltInsForNumbers.BIG_DECIMAL_LONG_MIN:Ljava/math/BigDecimal;
         2: .line 312
            ldc 9223372036854775807
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            putstatic freemarker.core.BuiltInsForNumbers.BIG_DECIMAL_LONG_MAX:Ljava/math/BigDecimal;
         3: .line 313
            ldc -9223372036854775808
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic freemarker.core.BuiltInsForNumbers.BIG_INTEGER_LONG_MIN:Ljava/math/BigInteger;
         4: .line 315
            ldc 9223372036854775807
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic freemarker.core.BuiltInsForNumbers.BIG_INTEGER_LONG_MAX:Ljava/math/BigInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static final long safeToLong(java.lang.Number);
    descriptor: (Ljava/lang/Number;)J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // java.lang.Number num
         0: .line 272
            aload 0 /* num */
            instanceof java.lang.Double
            ifeq 7
         1: .line 273
            aload 0 /* num */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            invokestatic java.lang.Math.round:(D)J
            l2d
            dstore 1 /* d */
        start local 1 // double d
         2: .line 274
            dload 1 /* d */
            ldc 9.223372036854776E18
            dcmpl
            ifgt 3
            dload 1 /* d */
            ldc -9.223372036854776E18
            dcmpg
            ifge 6
         3: .line 275
      StackMap locals: double
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 276
            ldc "Number doesn't fit into a 64 bit signed integer (long): "
            aastore
            dup
            iconst_1
            dload 1 /* d */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
         5: .line 275
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
         6: .line 278
      StackMap locals:
      StackMap stack:
            dload 1 /* d */
            d2l
            lreturn
        end local 1 // double d
         7: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* num */
            instanceof java.lang.Float
            ifeq 14
         8: .line 281
            aload 0 /* num */
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            invokestatic java.lang.Math.round:(F)I
            i2f
            fstore 1 /* f */
        start local 1 // float f
         9: .line 282
            fload 1 /* f */
            ldc 9.223372E18
            fcmpl
            ifgt 10
            fload 1 /* f */
            ldc -9.223372E18
            fcmpg
            ifge 13
        10: .line 283
      StackMap locals: float
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        11: .line 284
            ldc "Number doesn't fit into a 64 bit signed integer (long): "
            aastore
            dup
            iconst_1
            fload 1 /* f */
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
        12: .line 283
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        13: .line 286
      StackMap locals:
      StackMap stack:
            fload 1 /* f */
            f2l
            lreturn
        end local 1 // float f
        14: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* num */
            instanceof java.math.BigDecimal
            ifeq 19
        15: .line 289
            aload 0 /* num */
            checkcast java.math.BigDecimal
            iconst_0
            iconst_4
            invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
            astore 1 /* bd */
        start local 1 // java.math.BigDecimal bd
        16: .line 290
            aload 1 /* bd */
            getstatic freemarker.core.BuiltInsForNumbers.BIG_DECIMAL_LONG_MAX:Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifgt 17
            aload 1 /* bd */
            getstatic freemarker.core.BuiltInsForNumbers.BIG_DECIMAL_LONG_MIN:Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifge 18
        17: .line 291
      StackMap locals: java.math.BigDecimal
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Number doesn't fit into a 64 bit signed integer (long): "
            aastore
            dup
            iconst_1
            aload 1 /* bd */
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        18: .line 293
      StackMap locals:
      StackMap stack:
            aload 1 /* bd */
            invokevirtual java.math.BigDecimal.longValue:()J
            lreturn
        end local 1 // java.math.BigDecimal bd
        19: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* num */
            instanceof java.math.BigInteger
            ifeq 24
        20: .line 296
            aload 0 /* num */
            checkcast java.math.BigInteger
            astore 1 /* bi */
        start local 1 // java.math.BigInteger bi
        21: .line 297
            aload 1 /* bi */
            getstatic freemarker.core.BuiltInsForNumbers.BIG_INTEGER_LONG_MAX:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifgt 22
            aload 1 /* bi */
            getstatic freemarker.core.BuiltInsForNumbers.BIG_INTEGER_LONG_MIN:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifge 23
        22: .line 298
      StackMap locals: java.math.BigInteger
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Number doesn't fit into a 64 bit signed integer (long): "
            aastore
            dup
            iconst_1
            aload 1 /* bi */
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        23: .line 300
      StackMap locals:
      StackMap stack:
            aload 1 /* bi */
            invokevirtual java.math.BigInteger.longValue:()J
            lreturn
        end local 1 // java.math.BigInteger bi
        24: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* num */
            instanceof java.lang.Long
            ifne 25
            aload 0 /* num */
            instanceof java.lang.Integer
            ifne 25
            aload 0 /* num */
            instanceof java.lang.Byte
            ifne 25
            aload 0 /* num */
            instanceof java.lang.Short
            ifeq 26
        25: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* num */
            invokevirtual java.lang.Number.longValue:()J
            lreturn
        26: .line 306
      StackMap locals:
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Unsupported number type: "
            aastore
            dup
            iconst_1
            aload 0 /* num */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        end local 0 // java.lang.Number num
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   27     0   num  Ljava/lang/Number;
            2    7     1     d  D
            9   14     1     f  F
           16   19     1    bd  Ljava/math/BigDecimal;
           21   24     1    bi  Ljava/math/BigInteger;
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
      Name  Flags
      num   

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltInsForNumbers this
         0: .line 318
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // freemarker.core.BuiltInsForNumbers this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsForNumbers;
}
SourceFile: "BuiltInsForNumbers.java"
NestMembers:
  freemarker.core.BuiltInsForNumbers$abcBI  freemarker.core.BuiltInsForNumbers$absBI  freemarker.core.BuiltInsForNumbers$byteBI  freemarker.core.BuiltInsForNumbers$ceilingBI  freemarker.core.BuiltInsForNumbers$doubleBI  freemarker.core.BuiltInsForNumbers$floatBI  freemarker.core.BuiltInsForNumbers$floorBI  freemarker.core.BuiltInsForNumbers$intBI  freemarker.core.BuiltInsForNumbers$is_infiniteBI  freemarker.core.BuiltInsForNumbers$is_nanBI  freemarker.core.BuiltInsForNumbers$longBI  freemarker.core.BuiltInsForNumbers$lower_abcBI  freemarker.core.BuiltInsForNumbers$number_to_dateBI  freemarker.core.BuiltInsForNumbers$roundBI  freemarker.core.BuiltInsForNumbers$shortBI  freemarker.core.BuiltInsForNumbers$upper_abcBI
InnerClasses:
  private abstract abcBI = freemarker.core.BuiltInsForNumbers$abcBI of freemarker.core.BuiltInsForNumbers
  absBI = freemarker.core.BuiltInsForNumbers$absBI of freemarker.core.BuiltInsForNumbers
  byteBI = freemarker.core.BuiltInsForNumbers$byteBI of freemarker.core.BuiltInsForNumbers
  ceilingBI = freemarker.core.BuiltInsForNumbers$ceilingBI of freemarker.core.BuiltInsForNumbers
  doubleBI = freemarker.core.BuiltInsForNumbers$doubleBI of freemarker.core.BuiltInsForNumbers
  floatBI = freemarker.core.BuiltInsForNumbers$floatBI of freemarker.core.BuiltInsForNumbers
  floorBI = freemarker.core.BuiltInsForNumbers$floorBI of freemarker.core.BuiltInsForNumbers
  intBI = freemarker.core.BuiltInsForNumbers$intBI of freemarker.core.BuiltInsForNumbers
  is_infiniteBI = freemarker.core.BuiltInsForNumbers$is_infiniteBI of freemarker.core.BuiltInsForNumbers
  is_nanBI = freemarker.core.BuiltInsForNumbers$is_nanBI of freemarker.core.BuiltInsForNumbers
  longBI = freemarker.core.BuiltInsForNumbers$longBI of freemarker.core.BuiltInsForNumbers
  lower_abcBI = freemarker.core.BuiltInsForNumbers$lower_abcBI of freemarker.core.BuiltInsForNumbers
  number_to_dateBI = freemarker.core.BuiltInsForNumbers$number_to_dateBI of freemarker.core.BuiltInsForNumbers
  roundBI = freemarker.core.BuiltInsForNumbers$roundBI of freemarker.core.BuiltInsForNumbers
  shortBI = freemarker.core.BuiltInsForNumbers$shortBI of freemarker.core.BuiltInsForNumbers
  upper_abcBI = freemarker.core.BuiltInsForNumbers$upper_abcBI of freemarker.core.BuiltInsForNumbers