class org.h2.mvstore.type.ObjectDataType$BigDecimalType extends org.h2.mvstore.type.ObjectDataType$AutoDetectDataType
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.h2.mvstore.type.ObjectDataType$BigDecimalType
  super_class: org.h2.mvstore.type.ObjectDataType$AutoDetectDataType
{
  void <init>(org.h2.mvstore.type.ObjectDataType);
    descriptor: (Lorg/h2/mvstore/type/ObjectDataType;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
        start local 1 // org.h2.mvstore.type.ObjectDataType base
         0: .line 1017
            aload 0 /* this */
            aload 1 /* base */
            bipush 9
            invokespecial org.h2.mvstore.type.ObjectDataType$AutoDetectDataType.<init>:(Lorg/h2/mvstore/type/ObjectDataType;I)V
         1: .line 1018
            return
        end local 1 // org.h2.mvstore.type.ObjectDataType base
        end local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/mvstore/type/ObjectDataType$BigDecimalType;
            0    2     1  base  Lorg/h2/mvstore/type/ObjectDataType;
    MethodParameters:
      Name  Flags
      base  

  public int compare(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
        start local 1 // java.lang.Object aObj
        start local 2 // java.lang.Object bObj
         0: .line 1022
            aload 1 /* aObj */
            invokestatic org.h2.mvstore.type.ObjectDataType.isBigDecimal:(Ljava/lang/Object;)Z
            ifeq 4
            aload 2 /* bObj */
            invokestatic org.h2.mvstore.type.ObjectDataType.isBigDecimal:(Ljava/lang/Object;)Z
            ifeq 4
         1: .line 1023
            aload 1 /* aObj */
            checkcast java.math.BigDecimal
            astore 3 /* a */
        start local 3 // java.math.BigDecimal a
         2: .line 1024
            aload 2 /* bObj */
            checkcast java.math.BigDecimal
            astore 4 /* b */
        start local 4 // java.math.BigDecimal b
         3: .line 1025
            aload 3 /* a */
            aload 4 /* b */
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ireturn
        end local 4 // java.math.BigDecimal b
        end local 3 // java.math.BigDecimal a
         4: .line 1027
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* aObj */
            aload 2 /* bObj */
            invokespecial org.h2.mvstore.type.ObjectDataType$AutoDetectDataType.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
            ireturn
        end local 2 // java.lang.Object bObj
        end local 1 // java.lang.Object aObj
        end local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/h2/mvstore/type/ObjectDataType$BigDecimalType;
            0    5     1  aObj  Ljava/lang/Object;
            0    5     2  bObj  Ljava/lang/Object;
            2    4     3     a  Ljava/math/BigDecimal;
            3    4     4     b  Ljava/math/BigDecimal;
    MethodParameters:
      Name  Flags
      aObj  
      bObj  

  public int getMemory(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
        start local 1 // java.lang.Object obj
         0: .line 1032
            aload 1 /* obj */
            invokestatic org.h2.mvstore.type.ObjectDataType.isBigDecimal:(Ljava/lang/Object;)Z
            ifeq 1
            sipush 150
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            aload 1 /* obj */
            invokespecial org.h2.mvstore.type.ObjectDataType$AutoDetectDataType.getMemory:(Ljava/lang/Object;)I
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.lang.Object obj
        end local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/mvstore/type/ObjectDataType$BigDecimalType;
            0    3     1   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   

  public void write(org.h2.mvstore.WriteBuffer, java.lang.Object);
    descriptor: (Lorg/h2/mvstore/WriteBuffer;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
        start local 1 // org.h2.mvstore.WriteBuffer buff
        start local 2 // java.lang.Object obj
         0: .line 1037
            aload 2 /* obj */
            invokestatic org.h2.mvstore.type.ObjectDataType.isBigDecimal:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 1038
            aload 0 /* this */
            aload 1 /* buff */
            aload 2 /* obj */
            invokespecial org.h2.mvstore.type.ObjectDataType$AutoDetectDataType.write:(Lorg/h2/mvstore/WriteBuffer;Ljava/lang/Object;)V
         2: .line 1039
            return
         3: .line 1041
      StackMap locals:
      StackMap stack:
            aload 2 /* obj */
            checkcast java.math.BigDecimal
            astore 3 /* x */
        start local 3 // java.math.BigDecimal x
         4: .line 1042
            getstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
            aload 3 /* x */
            invokevirtual java.math.BigDecimal.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 1043
            aload 1 /* buff */
            bipush 46
            invokevirtual org.h2.mvstore.WriteBuffer.put:(B)Lorg/h2/mvstore/WriteBuffer;
            pop
         6: .line 1044
            goto 24
      StackMap locals: java.math.BigDecimal
      StackMap stack:
         7: getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
            aload 3 /* x */
            invokevirtual java.math.BigDecimal.equals:(Ljava/lang/Object;)Z
            ifeq 10
         8: .line 1045
            aload 1 /* buff */
            bipush 47
            invokevirtual org.h2.mvstore.WriteBuffer.put:(B)Lorg/h2/mvstore/WriteBuffer;
            pop
         9: .line 1046
            goto 24
        10: .line 1047
      StackMap locals:
      StackMap stack:
            aload 3 /* x */
            invokevirtual java.math.BigDecimal.scale:()I
            istore 4 /* scale */
        start local 4 // int scale
        11: .line 1048
            aload 3 /* x */
            invokevirtual java.math.BigDecimal.unscaledValue:()Ljava/math/BigInteger;
            astore 5 /* b */
        start local 5 // java.math.BigInteger b
        12: .line 1049
            aload 5 /* b */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 6 /* bits */
        start local 6 // int bits
        13: .line 1050
            iload 6 /* bits */
            bipush 64
            if_icmpge 21
        14: .line 1051
            iload 4 /* scale */
            ifne 17
        15: .line 1052
            aload 1 /* buff */
            bipush 48
            invokevirtual org.h2.mvstore.WriteBuffer.put:(B)Lorg/h2/mvstore/WriteBuffer;
            pop
        16: .line 1053
            goto 19
        17: .line 1054
      StackMap locals: int java.math.BigInteger int
      StackMap stack:
            aload 1 /* buff */
            bipush 49
            invokevirtual org.h2.mvstore.WriteBuffer.put:(B)Lorg/h2/mvstore/WriteBuffer;
        18: .line 1055
            iload 4 /* scale */
            invokevirtual org.h2.mvstore.WriteBuffer.putVarInt:(I)Lorg/h2/mvstore/WriteBuffer;
            pop
        19: .line 1057
      StackMap locals:
      StackMap stack:
            aload 1 /* buff */
            aload 5 /* b */
            invokevirtual java.math.BigInteger.longValue:()J
            invokevirtual org.h2.mvstore.WriteBuffer.putVarLong:(J)Lorg/h2/mvstore/WriteBuffer;
            pop
        20: .line 1058
            goto 24
        21: .line 1059
      StackMap locals:
      StackMap stack:
            aload 5 /* b */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 7 /* bytes */
        start local 7 // byte[] bytes
        22: .line 1060
            aload 1 /* buff */
            bipush 9
            invokevirtual org.h2.mvstore.WriteBuffer.put:(B)Lorg/h2/mvstore/WriteBuffer;
            iload 4 /* scale */
            invokevirtual org.h2.mvstore.WriteBuffer.putVarInt:(I)Lorg/h2/mvstore/WriteBuffer;
        23: .line 1061
            aload 7 /* bytes */
            arraylength
            invokevirtual org.h2.mvstore.WriteBuffer.putVarInt:(I)Lorg/h2/mvstore/WriteBuffer;
            aload 7 /* bytes */
            invokevirtual org.h2.mvstore.WriteBuffer.put:([B)Lorg/h2/mvstore/WriteBuffer;
            pop
        end local 7 // byte[] bytes
        end local 6 // int bits
        end local 5 // java.math.BigInteger b
        end local 4 // int scale
        24: .line 1064
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.math.BigDecimal x
        end local 2 // java.lang.Object obj
        end local 1 // org.h2.mvstore.WriteBuffer buff
        end local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   25     0   this  Lorg/h2/mvstore/type/ObjectDataType$BigDecimalType;
            0   25     1   buff  Lorg/h2/mvstore/WriteBuffer;
            0   25     2    obj  Ljava/lang/Object;
            4   25     3      x  Ljava/math/BigDecimal;
           11   24     4  scale  I
           12   24     5      b  Ljava/math/BigInteger;
           13   24     6   bits  I
           22   24     7  bytes  [B
    MethodParameters:
      Name  Flags
      buff  
      obj   

  public java.lang.Object read(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
        start local 1 // java.nio.ByteBuffer buff
        start local 2 // int tag
         0: .line 1068
            iload 2 /* tag */
            tableswitch { // 46 - 49
                   46: 1
                   47: 2
                   48: 3
                   49: 4
              default: 6
          }
         1: .line 1070
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
            areturn
         2: .line 1072
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
            areturn
         3: .line 1074
      StackMap locals:
      StackMap stack:
            aload 1 /* buff */
            invokestatic org.h2.mvstore.DataUtils.readVarLong:(Ljava/nio/ByteBuffer;)J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            areturn
         4: .line 1076
      StackMap locals:
      StackMap stack:
            aload 1 /* buff */
            invokestatic org.h2.mvstore.DataUtils.readVarInt:(Ljava/nio/ByteBuffer;)I
            istore 3 /* scale */
        start local 3 // int scale
         5: .line 1077
            aload 1 /* buff */
            invokestatic org.h2.mvstore.DataUtils.readVarLong:(Ljava/nio/ByteBuffer;)J
            iload 3 /* scale */
            invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
            areturn
        end local 3 // int scale
         6: .line 1079
      StackMap locals:
      StackMap stack:
            aload 1 /* buff */
            invokestatic org.h2.mvstore.DataUtils.readVarInt:(Ljava/nio/ByteBuffer;)I
            istore 3 /* scale */
        start local 3 // int scale
         7: .line 1080
            aload 1 /* buff */
            invokestatic org.h2.mvstore.DataUtils.readVarInt:(Ljava/nio/ByteBuffer;)I
            istore 4 /* len */
        start local 4 // int len
         8: .line 1081
            iload 4 /* len */
            invokestatic org.h2.util.Utils.newBytes:(I)[B
            astore 5 /* bytes */
        start local 5 // byte[] bytes
         9: .line 1082
            aload 1 /* buff */
            aload 5 /* bytes */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
        10: .line 1083
            new java.math.BigInteger
            dup
            aload 5 /* bytes */
            invokespecial java.math.BigInteger.<init>:([B)V
            astore 6 /* b */
        start local 6 // java.math.BigInteger b
        11: .line 1084
            new java.math.BigDecimal
            dup
            aload 6 /* b */
            iload 3 /* scale */
            invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;I)V
            areturn
        end local 6 // java.math.BigInteger b
        end local 5 // byte[] bytes
        end local 4 // int len
        end local 3 // int scale
        end local 2 // int tag
        end local 1 // java.nio.ByteBuffer buff
        end local 0 // org.h2.mvstore.type.ObjectDataType$BigDecimalType this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lorg/h2/mvstore/type/ObjectDataType$BigDecimalType;
            0   12     1   buff  Ljava/nio/ByteBuffer;
            0   12     2    tag  I
            5    6     3  scale  I
            7   12     3  scale  I
            8   12     4    len  I
            9   12     5  bytes  [B
           11   12     6      b  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      buff  
      tag   
}
SourceFile: "ObjectDataType.java"
NestHost: org.h2.mvstore.type.ObjectDataType
InnerClasses:
  abstract AutoDetectDataType = org.h2.mvstore.type.ObjectDataType$AutoDetectDataType of org.h2.mvstore.type.ObjectDataType
  BigDecimalType = org.h2.mvstore.type.ObjectDataType$BigDecimalType of org.h2.mvstore.type.ObjectDataType