abstract class org.apache.cassandra.utils.MerkleTree$Hashable implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.cassandra.utils.MerkleTree$Hashable
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final org.apache.cassandra.dht.IPartitionerDependentSerializer<org.apache.cassandra.utils.MerkleTree$Hashable> serializer;
    descriptor: Lorg/apache/cassandra/dht/IPartitionerDependentSerializer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/apache/cassandra/dht/IPartitionerDependentSerializer<Lorg/apache/cassandra/utils/MerkleTree$Hashable;>;

  protected byte[] hash;
    descriptor: [B
    flags: (0x0004) ACC_PROTECTED

  protected long sizeOfRange;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  protected long rowsInRange;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 1054
            new org.apache.cassandra.utils.MerkleTree$Hashable$HashableSerializer
            dup
            invokespecial org.apache.cassandra.utils.MerkleTree$Hashable$HashableSerializer.<init>:()V
            putstatic org.apache.cassandra.utils.MerkleTree$Hashable.serializer:Lorg/apache/cassandra/dht/IPartitionerDependentSerializer;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
        start local 1 // byte[] hash
         0: .line 1060
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1062
            aload 0 /* this */
            aload 1 /* hash */
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
         2: .line 1063
            return
        end local 1 // byte[] hash
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            0    3     1  hash  [B
    MethodParameters:
      Name  Flags
      hash  

  public byte[] hash();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
         0: .line 1067
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;

  public long sizeOfRange();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
         0: .line 1072
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.sizeOfRange:J
            lreturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;

  public long rowsInRange();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
         0: .line 1077
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.rowsInRange:J
            lreturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;

  void hash(byte[]);
    descriptor: ([B)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
        start local 1 // byte[] hash
         0: .line 1082
            aload 0 /* this */
            aload 1 /* hash */
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
         1: .line 1083
            return
        end local 1 // byte[] hash
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            0    2     1  hash  [B
    MethodParameters:
      Name  Flags
      hash  

  org.apache.cassandra.utils.MerkleTree$Hashable calc();
    descriptor: ()Lorg/apache/cassandra/utils/MerkleTree$Hashable;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
         0: .line 1087
            aload 0 /* this */
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;

  void hash(byte[], byte[]);
    descriptor: ([B[B)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
        start local 1 // byte[] lefthash
        start local 2 // byte[] righthash
         0: .line 1097
            aload 0 /* this */
            aload 1 /* lefthash */
            aload 2 /* righthash */
            invokestatic org.apache.cassandra.utils.MerkleTree$Hashable.binaryHash:([B[B)[B
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
         1: .line 1098
            return
        end local 2 // byte[] righthash
        end local 1 // byte[] lefthash
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            0    2     1   lefthash  [B
            0    2     2  righthash  [B
    MethodParameters:
           Name  Flags
      lefthash   
      righthash  

  void addHash(byte[], long);
    descriptor: ([BJ)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
        start local 1 // byte[] righthash
        start local 2 // long sizeOfRow
         0: .line 1106
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
            ifnonnull 2
         1: .line 1107
            aload 0 /* this */
            aload 1 /* righthash */
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
            goto 3
         2: .line 1109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
            aload 1 /* righthash */
            invokestatic org.apache.cassandra.utils.MerkleTree$Hashable.binaryHash:([B[B)[B
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.hash:[B
         3: .line 1110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.sizeOfRange:J
            lload 2 /* sizeOfRow */
            ladd
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.sizeOfRange:J
         4: .line 1111
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.utils.MerkleTree$Hashable.rowsInRange:J
            lconst_1
            ladd
            putfield org.apache.cassandra.utils.MerkleTree$Hashable.rowsInRange:J
         5: .line 1112
            return
        end local 2 // long sizeOfRow
        end local 1 // byte[] righthash
        end local 0 // org.apache.cassandra.utils.MerkleTree$Hashable this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            0    6     1  righthash  [B
            0    6     2  sizeOfRow  J
    MethodParameters:
           Name  Flags
      righthash  
      sizeOfRow  

  static byte[] binaryHash(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // byte[] left
        start local 1 // byte[] right
         0: .line 1120
            aload 0 /* left */
            aload 1 /* right */
            invokestatic org.apache.cassandra.utils.FBUtilities.xor:([B[B)[B
            areturn
        end local 1 // byte[] right
        end local 0 // byte[] left
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   left  [B
            0    1     1  right  [B
    MethodParameters:
       Name  Flags
      left   final
      right  final

  public abstract void toString(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      buff      
      maxdepth  

  public static java.lang.String toString(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // byte[] hash
         0: .line 1127
            aload 0 /* hash */
            ifnonnull 2
         1: .line 1128
            ldc "null"
            areturn
         2: .line 1129
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* hash */
            invokestatic org.apache.cassandra.utils.Hex.bytesToHex:([B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // byte[] hash
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  hash  [B
    MethodParameters:
      Name  Flags
      hash  
}
SourceFile: "MerkleTree.java"
NestHost: org.apache.cassandra.utils.MerkleTree
InnerClasses:
  abstract Hashable = org.apache.cassandra.utils.MerkleTree$Hashable of org.apache.cassandra.utils.MerkleTree
  private HashableSerializer = org.apache.cassandra.utils.MerkleTree$Hashable$HashableSerializer of org.apache.cassandra.utils.MerkleTree$Hashable