public class org.apache.cassandra.dht.ByteOrderedPartitioner implements org.apache.cassandra.dht.IPartitioner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.dht.ByteOrderedPartitioner
  super_class: java.lang.Object
{
  public static final org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken MINIMUM;
    descriptor: Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.math.BigInteger BYTE_MASK;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final long EMPTY_SIZE;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final org.apache.cassandra.dht.ByteOrderedPartitioner instance;
    descriptor: Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private final org.apache.cassandra.dht.Token$TokenFactory tokenFactory;
    descriptor: Lorg/apache/cassandra/dht/Token$TokenFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 48
            new org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            dup
            getstatic org.apache.commons.lang3.ArrayUtils.EMPTY_BYTE_ARRAY:[B
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.<init>:([B)V
            putstatic org.apache.cassandra.dht.ByteOrderedPartitioner.MINIMUM:Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
         1: .line 50
            new java.math.BigInteger
            dup
            ldc "255"
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;)V
            putstatic org.apache.cassandra.dht.ByteOrderedPartitioner.BYTE_MASK:Ljava/math/BigInteger;
         2: .line 52
            getstatic org.apache.cassandra.dht.ByteOrderedPartitioner.MINIMUM:Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            invokestatic org.apache.cassandra.utils.ObjectSizes.measure:(Ljava/lang/Object;)J
            putstatic org.apache.cassandra.dht.ByteOrderedPartitioner.EMPTY_SIZE:J
         3: .line 54
            new org.apache.cassandra.dht.ByteOrderedPartitioner
            dup
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner.<init>:()V
            putstatic org.apache.cassandra.dht.ByteOrderedPartitioner.instance:Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 222
            aload 0 /* this */
            new org.apache.cassandra.dht.ByteOrderedPartitioner$1
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner$1.<init>:(Lorg/apache/cassandra/dht/ByteOrderedPartitioner;)V
            putfield org.apache.cassandra.dht.ByteOrderedPartitioner.tokenFactory:Lorg/apache/cassandra/dht/Token$TokenFactory;
         2: .line 46
            return
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;

  public org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken getToken(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // java.nio.ByteBuffer key
         0: .line 138
            aload 1 /* key */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 2
         1: .line 139
            getstatic org.apache.cassandra.dht.ByteOrderedPartitioner.MINIMUM:Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
         2: .line 140
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            dup
            aload 1 /* key */
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.<init>:(Ljava/nio/ByteBuffer;)V
            areturn
        end local 1 // java.nio.ByteBuffer key
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    3     1   key  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      key   

  public org.apache.cassandra.db.DecoratedKey decorateKey(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/db/DecoratedKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // java.nio.ByteBuffer key
         0: .line 145
            new org.apache.cassandra.db.BufferDecoratedKey
            dup
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getToken:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            aload 1 /* key */
            invokespecial org.apache.cassandra.db.BufferDecoratedKey.<init>:(Lorg/apache/cassandra/dht/Token;Ljava/nio/ByteBuffer;)V
            areturn
        end local 1 // java.nio.ByteBuffer key
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    1     1   key  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      key   

  public org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken midpoint(org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // org.apache.cassandra.dht.Token lt
        start local 2 // org.apache.cassandra.dht.Token rt
         0: .line 150
            aload 1 /* lt */
            checkcast org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            astore 3 /* ltoken */
        start local 3 // org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken ltoken
         1: .line 151
            aload 2 /* rt */
            checkcast org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            astore 4 /* rtoken */
        start local 4 // org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken rtoken
         2: .line 153
            aload 3 /* ltoken */
            getfield org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.token:[B
            arraylength
            aload 4 /* rtoken */
            getfield org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.token:[B
            arraylength
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* sigbytes */
        start local 5 // int sigbytes
         3: .line 154
            aload 0 /* this */
            aload 3 /* ltoken */
            getfield org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.token:[B
            iload 5 /* sigbytes */
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.bigForBytes:([BI)Ljava/math/BigInteger;
            astore 6 /* left */
        start local 6 // java.math.BigInteger left
         4: .line 155
            aload 0 /* this */
            aload 4 /* rtoken */
            getfield org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.token:[B
            iload 5 /* sigbytes */
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.bigForBytes:([BI)Ljava/math/BigInteger;
            astore 7 /* right */
        start local 7 // java.math.BigInteger right
         5: .line 157
            aload 6 /* left */
            aload 7 /* right */
            bipush 8
            iload 5 /* sigbytes */
            imul
            invokestatic org.apache.cassandra.utils.FBUtilities.midpoint:(Ljava/math/BigInteger;Ljava/math/BigInteger;I)Lorg/apache/cassandra/utils/Pair;
            astore 8 /* midpair */
        start local 8 // org.apache.cassandra.utils.Pair midpair
         6: .line 158
            new org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            dup
            aload 0 /* this */
            aload 8 /* midpair */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.math.BigInteger
            iload 5 /* sigbytes */
            aload 8 /* midpair */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.bytesForBig:(Ljava/math/BigInteger;IZ)[B
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.<init>:([B)V
            areturn
        end local 8 // org.apache.cassandra.utils.Pair midpair
        end local 7 // java.math.BigInteger right
        end local 6 // java.math.BigInteger left
        end local 5 // int sigbytes
        end local 4 // org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken rtoken
        end local 3 // org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken ltoken
        end local 2 // org.apache.cassandra.dht.Token rt
        end local 1 // org.apache.cassandra.dht.Token lt
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    7     1        lt  Lorg/apache/cassandra/dht/Token;
            0    7     2        rt  Lorg/apache/cassandra/dht/Token;
            1    7     3    ltoken  Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            2    7     4    rtoken  Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            3    7     5  sigbytes  I
            4    7     6      left  Ljava/math/BigInteger;
            5    7     7     right  Ljava/math/BigInteger;
            6    7     8   midpair  Lorg/apache/cassandra/utils/Pair<Ljava/math/BigInteger;Ljava/lang/Boolean;>;
    MethodParameters:
      Name  Flags
      lt    
      rt    

  public org.apache.cassandra.dht.Token split(org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token, double);
    descriptor: (Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;D)Lorg/apache/cassandra/dht/Token;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=4
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // org.apache.cassandra.dht.Token left
        start local 2 // org.apache.cassandra.dht.Token right
        start local 3 // double ratioToLeft
         0: .line 163
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // double ratioToLeft
        end local 2 // org.apache.cassandra.dht.Token right
        end local 1 // org.apache.cassandra.dht.Token left
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    1     1         left  Lorg/apache/cassandra/dht/Token;
            0    1     2        right  Lorg/apache/cassandra/dht/Token;
            0    1     3  ratioToLeft  D
    MethodParameters:
             Name  Flags
      left         
      right        
      ratioToLeft  

  private java.math.BigInteger bigForBytes(byte[], int);
    descriptor: ([BI)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // byte[] bytes
        start local 2 // int sigbytes
         0: .line 173
            iload 2 /* sigbytes */
            aload 1 /* bytes */
            arraylength
            if_icmpeq 4
         1: .line 175
            iload 2 /* sigbytes */
            newarray 8
            astore 3 /* b */
        start local 3 // byte[] b
         2: .line 176
            aload 1 /* bytes */
            iconst_0
            aload 3 /* b */
            iconst_0
            aload 1 /* bytes */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 177
            goto 5
        end local 3 // byte[] b
         4: .line 178
      StackMap locals:
      StackMap stack:
            aload 1 /* bytes */
            astore 3 /* b */
        start local 3 // byte[] b
         5: .line 179
      StackMap locals: byte[]
      StackMap stack:
            new java.math.BigInteger
            dup
            iconst_1
            aload 3 /* b */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            areturn
        end local 3 // byte[] b
        end local 2 // int sigbytes
        end local 1 // byte[] bytes
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    6     1     bytes  [B
            0    6     2  sigbytes  I
            2    4     3         b  [B
            5    6     3         b  [B
    MethodParameters:
          Name  Flags
      bytes     
      sigbytes  

  private byte[] bytesForBig(java.math.BigInteger, int, boolean);
    descriptor: (Ljava/math/BigInteger;IZ)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // java.math.BigInteger big
        start local 2 // int sigbytes
        start local 3 // boolean remainder
         0: .line 189
            iload 2 /* sigbytes */
            iload 3 /* remainder */
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: int
         1: iconst_0
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.math.BigInteger int int
      StackMap stack: int int
         2: iadd
            newarray 8
            astore 4 /* bytes */
        start local 4 // byte[] bytes
         3: .line 190
            iload 3 /* remainder */
            ifeq 5
         4: .line 193
            aload 4 /* bytes */
            iload 2 /* sigbytes */
            dup2
            baload
            sipush 128
            ior
            i2b
            bastore
         5: .line 196
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 10
         7: .line 198
      StackMap locals: int
      StackMap stack:
            bipush 8
            iload 2 /* sigbytes */
            iload 5 /* i */
            iconst_1
            iadd
            isub
            imul
            istore 6 /* maskpos */
        start local 6 // int maskpos
         8: .line 200
            aload 4 /* bytes */
            iload 5 /* i */
            aload 1 /* big */
            getstatic org.apache.cassandra.dht.ByteOrderedPartitioner.BYTE_MASK:Ljava/math/BigInteger;
            iload 6 /* maskpos */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.and:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 6 /* maskpos */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.intValue:()I
            sipush 255
            iand
            i2b
            bastore
        end local 6 // int maskpos
         9: .line 196
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            iload 2 /* sigbytes */
            if_icmplt 7
        end local 5 // int i
        11: .line 202
            aload 4 /* bytes */
            areturn
        end local 4 // byte[] bytes
        end local 3 // boolean remainder
        end local 2 // int sigbytes
        end local 1 // java.math.BigInteger big
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0   12     1        big  Ljava/math/BigInteger;
            0   12     2   sigbytes  I
            0   12     3  remainder  Z
            3   12     4      bytes  [B
            6   11     5          i  I
            8    9     6    maskpos  I
    MethodParameters:
           Name  Flags
      big        
      sigbytes   
      remainder  

  public org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken getMinimumToken();
    descriptor: ()Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 207
            getstatic org.apache.cassandra.dht.ByteOrderedPartitioner.MINIMUM:Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;

  public org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken getRandomToken();
    descriptor: ()Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 212
            aload 0 /* this */
            invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getRandomToken:(Ljava/util/Random;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;

  public org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken getRandomToken(java.util.Random);
    descriptor: (Ljava/util/Random;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // java.util.Random random
         0: .line 217
            bipush 16
            newarray 8
            astore 2 /* buffer */
        start local 2 // byte[] buffer
         1: .line 218
            aload 1 /* random */
            aload 2 /* buffer */
            invokevirtual java.util.Random.nextBytes:([B)V
         2: .line 219
            new org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
            dup
            aload 2 /* buffer */
            invokespecial org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken.<init>:([B)V
            areturn
        end local 2 // byte[] buffer
        end local 1 // java.util.Random random
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0    3     1  random  Ljava/util/Random;
            1    3     2  buffer  [B
    MethodParameters:
        Name  Flags
      random  

  public org.apache.cassandra.dht.Token$TokenFactory getTokenFactory();
    descriptor: ()Lorg/apache/cassandra/dht/Token$TokenFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 265
            aload 0 /* this */
            getfield org.apache.cassandra.dht.ByteOrderedPartitioner.tokenFactory:Lorg/apache/cassandra/dht/Token$TokenFactory;
            areturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;

  public boolean preservesOrder();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 270
            iconst_1
            ireturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;

  public java.util.Map<org.apache.cassandra.dht.Token, java.lang.Float> describeOwnership(java.util.List<org.apache.cassandra.dht.Token>);
    descriptor: (Ljava/util/List;)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=11, args_size=2
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
        start local 1 // java.util.List sortedTokens
         0: .line 276
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* allTokens */
        start local 2 // java.util.Map allTokens
         1: .line 277
            new java.util.ArrayList
            dup
            aload 1 /* sortedTokens */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* sortedRanges */
        start local 3 // java.util.List sortedRanges
         2: .line 280
            aload 1 /* sortedTokens */
            aload 1 /* sortedTokens */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Token
            astore 4 /* lastToken */
        start local 4 // org.apache.cassandra.dht.Token lastToken
         3: .line 281
            aload 1 /* sortedTokens */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 8
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token top java.util.Iterator
      StackMap stack:
         4: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Token
            astore 5 /* node */
        start local 5 // org.apache.cassandra.dht.Token node
         5: .line 283
            aload 2 /* allTokens */
            aload 5 /* node */
            new java.lang.Float
            dup
            dconst_0
            invokespecial java.lang.Float.<init>:(D)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 284
            aload 3 /* sortedRanges */
            new org.apache.cassandra.dht.Range
            dup
            aload 4 /* lastToken */
            aload 5 /* node */
            invokespecial org.apache.cassandra.dht.Range.<init>:(Lorg/apache/cassandra/dht/RingPosition;Lorg/apache/cassandra/dht/RingPosition;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 285
            aload 5 /* node */
            astore 4 /* lastToken */
        end local 5 // org.apache.cassandra.dht.Token node
         8: .line 281
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 288
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            invokevirtual org.apache.cassandra.config.Schema.getKeyspaces:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 18
      StackMap locals:
      StackMap stack:
        10: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* ks */
        start local 5 // java.lang.String ks
        11: .line 290
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 5 /* ks */
            invokevirtual org.apache.cassandra.config.Schema.getTablesAndViews:(Ljava/lang/String;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 8
            goto 17
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token java.lang.String java.util.Iterator top java.util.Iterator
      StackMap stack:
        12: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.config.CFMetaData
            astore 7 /* cfmd */
        start local 7 // org.apache.cassandra.config.CFMetaData cfmd
        13: .line 292
            aload 3 /* sortedRanges */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 16
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token java.lang.String java.util.Iterator org.apache.cassandra.config.CFMetaData java.util.Iterator top java.util.Iterator
      StackMap stack:
        14: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 9 /* r */
        start local 9 // org.apache.cassandra.dht.Range r
        15: .line 295
            aload 2 /* allTokens */
            aload 9 /* r */
            getfield org.apache.cassandra.dht.Range.right:Lorg/apache/cassandra/dht/RingPosition;
            checkcast org.apache.cassandra.dht.Token
            aload 2 /* allTokens */
            aload 9 /* r */
            getfield org.apache.cassandra.dht.Range.right:Lorg/apache/cassandra/dht/RingPosition;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
            aload 5 /* ks */
            aload 7 /* cfmd */
            getfield org.apache.cassandra.config.CFMetaData.cfName:Ljava/lang/String;
            aload 9 /* r */
            iconst_1
            invokevirtual org.apache.cassandra.service.StorageService.getSplits:(Ljava/lang/String;Ljava/lang/String;Lorg/apache/cassandra/dht/Range;I)Ljava/util/List;
            invokeinterface java.util.List.size:()I
            i2f
            fadd
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 9 // org.apache.cassandra.dht.Range r
        16: .line 292
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 7 // org.apache.cassandra.config.CFMetaData cfmd
        17: .line 290
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token java.lang.String java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        end local 5 // java.lang.String ks
        18: .line 288
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        19: .line 301
            new java.lang.Float
            dup
            dconst_0
            invokespecial java.lang.Float.<init>:(D)V
            astore 5 /* total */
        start local 5 // java.lang.Float total
        20: .line 302
            aload 2 /* allTokens */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 23
      StackMap locals: org.apache.cassandra.dht.ByteOrderedPartitioner java.util.List java.util.Map java.util.List org.apache.cassandra.dht.Token java.lang.Float top java.util.Iterator
      StackMap stack:
        21: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Float
            astore 6 /* f */
        start local 6 // java.lang.Float f
        22: .line 303
            aload 5 /* total */
            invokevirtual java.lang.Float.floatValue:()F
            aload 6 /* f */
            invokevirtual java.lang.Float.floatValue:()F
            fadd
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
            astore 5 /* total */
        end local 6 // java.lang.Float f
        23: .line 302
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        24: .line 304
            aload 2 /* allTokens */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 27
      StackMap locals:
      StackMap stack:
        25: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* row */
        start local 6 // java.util.Map$Entry row
        26: .line 305
            aload 2 /* allTokens */
            aload 6 /* row */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Token
            aload 6 /* row */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            aload 5 /* total */
            invokevirtual java.lang.Float.floatValue:()F
            fdiv
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.util.Map$Entry row
        27: .line 304
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        28: .line 307
            aload 2 /* allTokens */
            areturn
        end local 5 // java.lang.Float total
        end local 4 // org.apache.cassandra.dht.Token lastToken
        end local 3 // java.util.List sortedRanges
        end local 2 // java.util.Map allTokens
        end local 1 // java.util.List sortedTokens
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   29     0          this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
            0   29     1  sortedTokens  Ljava/util/List<Lorg/apache/cassandra/dht/Token;>;
            1   29     2     allTokens  Ljava/util/Map<Lorg/apache/cassandra/dht/Token;Ljava/lang/Float;>;
            2   29     3  sortedRanges  Ljava/util/List<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
            3   29     4     lastToken  Lorg/apache/cassandra/dht/Token;
            5    8     5          node  Lorg/apache/cassandra/dht/Token;
           11   18     5            ks  Ljava/lang/String;
           13   17     7          cfmd  Lorg/apache/cassandra/config/CFMetaData;
           15   16     9             r  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
           20   29     5         total  Ljava/lang/Float;
           22   23     6             f  Ljava/lang/Float;
           26   27     6           row  Ljava/util/Map$Entry<Lorg/apache/cassandra/dht/Token;Ljava/lang/Float;>;
    Signature: (Ljava/util/List<Lorg/apache/cassandra/dht/Token;>;)Ljava/util/Map<Lorg/apache/cassandra/dht/Token;Ljava/lang/Float;>;
    MethodParameters:
              Name  Flags
      sortedTokens  

  public org.apache.cassandra.db.marshal.AbstractType<?> getTokenValidator();
    descriptor: ()Lorg/apache/cassandra/db/marshal/AbstractType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 312
            getstatic org.apache.cassandra.db.marshal.BytesType.instance:Lorg/apache/cassandra/db/marshal/BytesType;
            areturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
    Signature: ()Lorg/apache/cassandra/db/marshal/AbstractType<*>;

  public org.apache.cassandra.db.marshal.AbstractType<?> partitionOrdering();
    descriptor: ()Lorg/apache/cassandra/db/marshal/AbstractType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
         0: .line 317
            getstatic org.apache.cassandra.db.marshal.BytesType.instance:Lorg/apache/cassandra/db/marshal/BytesType;
            areturn
        end local 0 // org.apache.cassandra.dht.ByteOrderedPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/ByteOrderedPartitioner;
    Signature: ()Lorg/apache/cassandra/db/marshal/AbstractType<*>;

  public org.apache.cassandra.dht.Token getToken(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/Token;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getToken:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.apache.cassandra.dht.Token getRandomToken(java.util.Random);
    descriptor: (Ljava/util/Random;)Lorg/apache/cassandra/dht/Token;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getRandomToken:(Ljava/util/Random;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.apache.cassandra.dht.Token getRandomToken();
    descriptor: ()Lorg/apache/cassandra/dht/Token;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getRandomToken:()Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.apache.cassandra.dht.Token getMinimumToken();
    descriptor: ()Lorg/apache/cassandra/dht/Token;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.getMinimumToken:()Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.apache.cassandra.dht.Token midpoint(org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/Token;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual org.apache.cassandra.dht.ByteOrderedPartitioner.midpoint:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/ByteOrderedPartitioner$BytesToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ByteOrderedPartitioner.java"
NestMembers:
  org.apache.cassandra.dht.ByteOrderedPartitioner$1  org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.apache.cassandra.dht.ByteOrderedPartitioner$1
  public BytesToken = org.apache.cassandra.dht.ByteOrderedPartitioner$BytesToken of org.apache.cassandra.dht.ByteOrderedPartitioner
  public abstract TokenFactory = org.apache.cassandra.dht.Token$TokenFactory of org.apache.cassandra.dht.Token