public class org.apache.cassandra.dht.OrderPreservingPartitioner 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.OrderPreservingPartitioner
  super_class: java.lang.Object
{
  private static final java.lang.String rndchars;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

  public static final org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken MINIMUM;
    descriptor: Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.math.BigInteger CHAR_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.OrderPreservingPartitioner instance;
    descriptor: Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
    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 final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 39
            ldc Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.dht.OrderPreservingPartitioner.$assertionsDisabled:Z
         3: .line 43
            new org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            dup
            ldc ""
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.<init>:(Ljava/lang/String;)V
            putstatic org.apache.cassandra.dht.OrderPreservingPartitioner.MINIMUM:Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
         4: .line 45
            new java.math.BigInteger
            dup
            ldc "65535"
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;)V
            putstatic org.apache.cassandra.dht.OrderPreservingPartitioner.CHAR_MASK:Ljava/math/BigInteger;
         5: .line 47
            getstatic org.apache.cassandra.dht.OrderPreservingPartitioner.MINIMUM:Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            invokestatic org.apache.cassandra.utils.ObjectSizes.measure:(Ljava/lang/Object;)J
            putstatic org.apache.cassandra.dht.OrderPreservingPartitioner.EMPTY_SIZE:J
         6: .line 49
            new org.apache.cassandra.dht.OrderPreservingPartitioner
            dup
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner.<init>:()V
            putstatic org.apache.cassandra.dht.OrderPreservingPartitioner.instance:Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            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.OrderPreservingPartitioner this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 128
            aload 0 /* this */
            new org.apache.cassandra.dht.OrderPreservingPartitioner$1
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner$1.<init>:(Lorg/apache/cassandra/dht/OrderPreservingPartitioner;)V
            putfield org.apache.cassandra.dht.OrderPreservingPartitioner.tokenFactory:Lorg/apache/cassandra/dht/Token$TokenFactory;
         2: .line 39
            return
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;

  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.OrderPreservingPartitioner this
        start local 1 // java.nio.ByteBuffer key
         0: .line 53
            new org.apache.cassandra.db.CachedHashDecoratedKey
            dup
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual org.apache.cassandra.dht.OrderPreservingPartitioner.getToken:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            aload 1 /* key */
            invokespecial org.apache.cassandra.db.CachedHashDecoratedKey.<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.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            0    1     1   key  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      key   

  public org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken 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/OrderPreservingPartitioner$StringToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
        start local 1 // org.apache.cassandra.dht.Token ltoken
        start local 2 // org.apache.cassandra.dht.Token rtoken
         0: .line 58
            aload 1 /* ltoken */
            checkcast org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            getfield org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.token:Ljava/lang/Comparable;
            checkcast java.lang.String
            invokevirtual java.lang.String.length:()I
            aload 2 /* rtoken */
            checkcast org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            getfield org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.token:Ljava/lang/Comparable;
            checkcast java.lang.String
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Math.max:(II)I
            istore 3 /* sigchars */
        start local 3 // int sigchars
         1: .line 59
            aload 1 /* ltoken */
            checkcast org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            getfield org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.token:Ljava/lang/Comparable;
            checkcast java.lang.String
            iload 3 /* sigchars */
            invokestatic org.apache.cassandra.dht.OrderPreservingPartitioner.bigForString:(Ljava/lang/String;I)Ljava/math/BigInteger;
            astore 4 /* left */
        start local 4 // java.math.BigInteger left
         2: .line 60
            aload 2 /* rtoken */
            checkcast org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            getfield org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.token:Ljava/lang/Comparable;
            checkcast java.lang.String
            iload 3 /* sigchars */
            invokestatic org.apache.cassandra.dht.OrderPreservingPartitioner.bigForString:(Ljava/lang/String;I)Ljava/math/BigInteger;
            astore 5 /* right */
        start local 5 // java.math.BigInteger right
         3: .line 62
            aload 4 /* left */
            aload 5 /* right */
            bipush 16
            iload 3 /* sigchars */
            imul
            invokestatic org.apache.cassandra.utils.FBUtilities.midpoint:(Ljava/math/BigInteger;Ljava/math/BigInteger;I)Lorg/apache/cassandra/utils/Pair;
            astore 6 /* midpair */
        start local 6 // org.apache.cassandra.utils.Pair midpair
         4: .line 63
            new org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            dup
            aload 0 /* this */
            aload 6 /* midpair */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.math.BigInteger
            iload 3 /* sigchars */
            aload 6 /* 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.OrderPreservingPartitioner.stringForBig:(Ljava/math/BigInteger;IZ)Ljava/lang/String;
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.<init>:(Ljava/lang/String;)V
            areturn
        end local 6 // org.apache.cassandra.utils.Pair midpair
        end local 5 // java.math.BigInteger right
        end local 4 // java.math.BigInteger left
        end local 3 // int sigchars
        end local 2 // org.apache.cassandra.dht.Token rtoken
        end local 1 // org.apache.cassandra.dht.Token ltoken
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            0    5     1    ltoken  Lorg/apache/cassandra/dht/Token;
            0    5     2    rtoken  Lorg/apache/cassandra/dht/Token;
            1    5     3  sigchars  I
            2    5     4      left  Ljava/math/BigInteger;
            3    5     5     right  Ljava/math/BigInteger;
            4    5     6   midpair  Lorg/apache/cassandra/utils/Pair<Ljava/math/BigInteger;Ljava/lang/Boolean;>;
    MethodParameters:
        Name  Flags
      ltoken  
      rtoken  

  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.OrderPreservingPartitioner 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 68
            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.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            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 static java.math.BigInteger bigForString(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // java.lang.String str
        start local 1 // int sigchars
         0: .line 78
            getstatic org.apache.cassandra.dht.OrderPreservingPartitioner.$assertionsDisabled:Z
            ifne 1
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            iload 1 /* sigchars */
            if_icmple 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 80
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            astore 2 /* big */
        start local 2 // java.math.BigInteger big
         2: .line 81
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 83
      StackMap locals: java.math.BigInteger int
      StackMap stack:
            bipush 16
            iload 1 /* sigchars */
            iload 3 /* i */
            iconst_1
            iadd
            isub
            imul
            istore 4 /* charpos */
        start local 4 // int charpos
         5: .line 84
            aload 0 /* str */
            iload 3 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            ldc 65535
            iand
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            astore 5 /* charbig */
        start local 5 // java.math.BigInteger charbig
         6: .line 85
            aload 2 /* big */
            aload 5 /* charbig */
            iload 4 /* charpos */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.or:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 2 /* big */
        end local 5 // java.math.BigInteger charbig
        end local 4 // int charpos
         7: .line 81
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            if_icmplt 4
        end local 3 // int i
         9: .line 87
            aload 2 /* big */
            areturn
        end local 2 // java.math.BigInteger big
        end local 1 // int sigchars
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0       str  Ljava/lang/String;
            0   10     1  sigchars  I
            2   10     2       big  Ljava/math/BigInteger;
            3    9     3         i  I
            5    7     4   charpos  I
            6    7     5   charbig  Ljava/math/BigInteger;
    MethodParameters:
          Name  Flags
      str       
      sigchars  

  private java.lang.String stringForBig(java.math.BigInteger, int, boolean);
    descriptor: (Ljava/math/BigInteger;IZ)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
        start local 1 // java.math.BigInteger big
        start local 2 // int sigchars
        start local 3 // boolean remainder
         0: .line 97
            iload 2 /* sigchars */
            iload 3 /* remainder */
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: int
         1: iconst_0
      StackMap locals: org.apache.cassandra.dht.OrderPreservingPartitioner java.math.BigInteger int int
      StackMap stack: int int
         2: iadd
            newarray 5
            astore 4 /* chars */
        start local 4 // char[] chars
         3: .line 98
            iload 3 /* remainder */
            ifeq 5
         4: .line 100
            aload 4 /* chars */
            iload 2 /* sigchars */
            dup2
            caload
            ldc 32768
            ior
            i2c
            castore
         5: .line 101
      StackMap locals: char[]
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 10
         7: .line 103
      StackMap locals: int
      StackMap stack:
            bipush 16
            iload 2 /* sigchars */
            iload 5 /* i */
            iconst_1
            iadd
            isub
            imul
            istore 6 /* maskpos */
        start local 6 // int maskpos
         8: .line 105
            aload 4 /* chars */
            iload 5 /* i */
            aload 1 /* big */
            getstatic org.apache.cassandra.dht.OrderPreservingPartitioner.CHAR_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
            ldc 65535
            iand
            i2c
            castore
        end local 6 // int maskpos
         9: .line 101
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            iload 2 /* sigchars */
            if_icmplt 7
        end local 5 // int i
        11: .line 107
            new java.lang.String
            dup
            aload 4 /* chars */
            invokespecial java.lang.String.<init>:([C)V
            areturn
        end local 4 // char[] chars
        end local 3 // boolean remainder
        end local 2 // int sigchars
        end local 1 // java.math.BigInteger big
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            0   12     1        big  Ljava/math/BigInteger;
            0   12     2   sigchars  I
            0   12     3  remainder  Z
            3   12     4      chars  [C
            6   11     5          i  I
            8    9     6    maskpos  I
    MethodParameters:
           Name  Flags
      big        
      sigchars   
      remainder  

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

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

  public org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken getRandomToken(java.util.Random);
    descriptor: (Ljava/util/Random;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
        start local 1 // java.util.Random random
         0: .line 122
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* buffer */
        start local 2 // java.lang.StringBuilder buffer
         1: .line 123
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         2: goto 5
         3: .line 124
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 2 /* buffer */
            ldc "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
            aload 1 /* random */
            ldc "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.util.Random.nextInt:(I)I
            invokevirtual java.lang.String.charAt:(I)C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         4: .line 123
            iinc 3 /* j */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* j */
            bipush 16
            if_icmplt 3
        end local 3 // int j
         6: .line 125
            new org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            dup
            aload 2 /* buffer */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.<init>:(Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.StringBuilder buffer
        end local 1 // java.util.Random random
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            0    7     1  random  Ljava/util/Random;
            1    7     2  buffer  Ljava/lang/StringBuilder;
            2    6     3       j  I
    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.OrderPreservingPartitioner this
         0: .line 168
            aload 0 /* this */
            getfield org.apache.cassandra.dht.OrderPreservingPartitioner.tokenFactory:Lorg/apache/cassandra/dht/Token$TokenFactory;
            areturn
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;

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

  public org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken getToken(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
        start local 1 // java.nio.ByteBuffer key
         0: .line 203
            aload 1 /* key */
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.string:(Ljava/nio/ByteBuffer;)Ljava/lang/String;
            astore 2 /* skey */
        start local 2 // java.lang.String skey
         1: .line 204
            goto 4
        end local 2 // java.lang.String skey
         2: .line 205
      StackMap locals:
      StackMap stack: java.nio.charset.CharacterCodingException
            pop
         3: .line 207
            aload 1 /* key */
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.bytesToHex:(Ljava/nio/ByteBuffer;)Ljava/lang/String;
            astore 2 /* skey */
        start local 2 // java.lang.String skey
         4: .line 209
      StackMap locals: java.lang.String
      StackMap stack:
            new org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
            dup
            aload 2 /* skey */
            invokespecial org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken.<init>:(Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String skey
        end local 1 // java.nio.ByteBuffer key
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            0    5     1   key  Ljava/nio/ByteBuffer;
            1    2     2  skey  Ljava/lang/String;
            4    5     2  skey  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.nio.charset.CharacterCodingException
    MethodParameters:
      Name  Flags
      key   

  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.OrderPreservingPartitioner this
        start local 1 // java.util.List sortedTokens
         0: .line 215
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* allTokens */
        start local 2 // java.util.Map allTokens
         1: .line 216
            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 219
            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 220
            aload 1 /* sortedTokens */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 8
      StackMap locals: org.apache.cassandra.dht.OrderPreservingPartitioner 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 222
            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 223
            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 224
            aload 5 /* node */
            astore 4 /* lastToken */
        end local 5 // org.apache.cassandra.dht.Token node
         8: .line 220
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 227
            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 229
            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.OrderPreservingPartitioner 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 231
            aload 3 /* sortedRanges */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 16
      StackMap locals: org.apache.cassandra.dht.OrderPreservingPartitioner 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 234
            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 */
            aload 7 /* cfmd */
            getfield org.apache.cassandra.config.CFMetaData.params:Lorg/apache/cassandra/schema/TableParams;
            getfield org.apache.cassandra.schema.TableParams.minIndexInterval:I
            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 231
      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 229
      StackMap locals: org.apache.cassandra.dht.OrderPreservingPartitioner 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 227
      StackMap locals: org.apache.cassandra.dht.OrderPreservingPartitioner 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 240
            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 241
            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.OrderPreservingPartitioner 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 242
            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 241
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        24: .line 243
            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 244
            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 243
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        28: .line 246
            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.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   29     0          this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
            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.OrderPreservingPartitioner this
         0: .line 251
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            areturn
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
    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.OrderPreservingPartitioner this
         0: .line 256
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            areturn
        end local 0 // org.apache.cassandra.dht.OrderPreservingPartitioner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/OrderPreservingPartitioner;
    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.OrderPreservingPartitioner.getToken:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            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.OrderPreservingPartitioner.getRandomToken:(Ljava/util/Random;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            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.OrderPreservingPartitioner.getRandomToken:()Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            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.OrderPreservingPartitioner.getMinimumToken:()Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            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.OrderPreservingPartitioner.midpoint:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/OrderPreservingPartitioner$StringToken;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "OrderPreservingPartitioner.java"
NestMembers:
  org.apache.cassandra.dht.OrderPreservingPartitioner$1  org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.apache.cassandra.dht.OrderPreservingPartitioner$1
  public StringToken = org.apache.cassandra.dht.OrderPreservingPartitioner$StringToken of org.apache.cassandra.dht.OrderPreservingPartitioner
  public abstract TokenFactory = org.apache.cassandra.dht.Token$TokenFactory of org.apache.cassandra.dht.Token