public class org.apache.cassandra.utils.UUIDGen
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.UUIDGen
  super_class: java.lang.Object
{
  private static final long START_EPOCH;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -12219292800000

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

  private static final long MIN_CLOCK_SEQ_AND_NODE;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -9187201950435737472

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

  private static final java.security.SecureRandom secureRandom;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.cassandra.utils.UUIDGen instance;
    descriptor: Lorg/apache/cassandra/utils/UUIDGen;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.util.concurrent.atomic.AtomicLong lastNanos;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0002) ACC_PRIVATE

  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=2, locals=0, args_size=0
         0: .line 37
            ldc Lorg/apache/cassandra/utils/UUIDGen;
            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.utils.UUIDGen.$assertionsDisabled:Z
         3: .line 41
            invokestatic org.apache.cassandra.utils.UUIDGen.makeClockSeqAndNode:()J
            putstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
         4: .line 57
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putstatic org.apache.cassandra.utils.UUIDGen.secureRandom:Ljava/security/SecureRandom;
         5: .line 60
            new org.apache.cassandra.utils.UUIDGen
            dup
            invokespecial org.apache.cassandra.utils.UUIDGen.<init>:()V
            putstatic org.apache.cassandra.utils.UUIDGen.instance:Lorg/apache/cassandra/utils/UUIDGen;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.UUIDGen this
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 62
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield org.apache.cassandra.utils.UUIDGen.lastNanos:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 67
            getstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
            lconst_0
            lcmp
            ifne 3
            new java.lang.RuntimeException
            dup
            ldc "singleton instantiation is misplaced."
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 68
      StackMap locals: org.apache.cassandra.utils.UUIDGen
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.utils.UUIDGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/utils/UUIDGen;

  public static java.util.UUID getTimeUUID();
    descriptor: ()Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 77
            new java.util.UUID
            dup
            getstatic org.apache.cassandra.utils.UUIDGen.instance:Lorg/apache/cassandra/utils/UUIDGen;
            invokevirtual org.apache.cassandra.utils.UUIDGen.createTimeSafe:()J
            getstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.util.UUID getTimeUUID(long);
    descriptor: (J)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // long when
         0: .line 87
            new java.util.UUID
            dup
            lload 0 /* when */
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(J)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            getstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 0 // long when
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  when  J
    MethodParameters:
      Name  Flags
      when  

  public static java.util.UUID getTimeUUIDFromMicros(long);
    descriptor: (J)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // long whenInMicros
         0: .line 103
            lload 0 /* whenInMicros */
            ldc 1000
            ldiv
            lstore 2 /* whenInMillis */
        start local 2 // long whenInMillis
         1: .line 104
            lload 0 /* whenInMicros */
            lload 2 /* whenInMillis */
            ldc 1000
            lmul
            lsub
            ldc 10
            lmul
            lstore 4 /* nanos */
        start local 4 // long nanos
         2: .line 105
            lload 2 /* whenInMillis */
            lload 4 /* nanos */
            invokestatic org.apache.cassandra.utils.UUIDGen.getTimeUUID:(JJ)Ljava/util/UUID;
            areturn
        end local 4 // long nanos
        end local 2 // long whenInMillis
        end local 0 // long whenInMicros
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  whenInMicros  J
            1    3     2  whenInMillis  J
            2    3     4         nanos  J
    MethodParameters:
              Name  Flags
      whenInMicros  

  public static java.util.UUID getRandomTimeUUIDFromMicros(long);
    descriptor: (J)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // long whenInMicros
         0: .line 122
            lload 0 /* whenInMicros */
            ldc 1000
            ldiv
            lstore 2 /* whenInMillis */
        start local 2 // long whenInMillis
         1: .line 123
            lload 0 /* whenInMicros */
            lload 2 /* whenInMillis */
            ldc 1000
            lmul
            lsub
            ldc 10
            lmul
            lstore 4 /* nanos */
        start local 4 // long nanos
         2: .line 124
            new java.util.UUID
            dup
            lload 2 /* whenInMillis */
            lload 4 /* nanos */
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(JJ)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            getstatic org.apache.cassandra.utils.UUIDGen.secureRandom:Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextLong:()J
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 4 // long nanos
        end local 2 // long whenInMillis
        end local 0 // long whenInMicros
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  whenInMicros  J
            1    3     2  whenInMillis  J
            2    3     4         nanos  J
    MethodParameters:
              Name  Flags
      whenInMicros  

  public static java.util.UUID getTimeUUID(long, long);
    descriptor: (JJ)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // long when
        start local 2 // long nanos
         0: .line 129
            new java.util.UUID
            dup
            lload 0 /* when */
            lload 2 /* nanos */
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(JJ)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            getstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 2 // long nanos
        end local 0 // long when
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   when  J
            0    1     2  nanos  J
    MethodParameters:
       Name  Flags
      when   
      nanos  

  public static java.util.UUID getTimeUUID(long, long, long);
    descriptor: (JJJ)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // long when
        start local 2 // long nanos
        start local 4 // long clockSeqAndNode
         0: .line 135
            new java.util.UUID
            dup
            lload 0 /* when */
            lload 2 /* nanos */
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(JJ)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            lload 4 /* clockSeqAndNode */
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 4 // long clockSeqAndNode
        end local 2 // long nanos
        end local 0 // long when
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             when  J
            0    1     2            nanos  J
            0    1     4  clockSeqAndNode  J
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
                 Name  Flags
      when             
      nanos            
      clockSeqAndNode  

  public static java.util.UUID getUUID(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // java.nio.ByteBuffer raw
         0: .line 141
            new java.util.UUID
            dup
            aload 0 /* raw */
            aload 0 /* raw */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.getLong:(I)J
            aload 0 /* raw */
            aload 0 /* raw */
            invokevirtual java.nio.ByteBuffer.position:()I
            bipush 8
            iadd
            invokevirtual java.nio.ByteBuffer.getLong:(I)J
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 0 // java.nio.ByteBuffer raw
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   raw  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      raw   

  public static java.nio.ByteBuffer toByteBuffer(java.util.UUID);
    descriptor: (Ljava/util/UUID;)Ljava/nio/ByteBuffer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 146
            bipush 16
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 1 /* buffer */
        start local 1 // java.nio.ByteBuffer buffer
         1: .line 147
            aload 1 /* buffer */
            aload 0 /* uuid */
            invokevirtual java.util.UUID.getMostSignificantBits:()J
            invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
            pop
         2: .line 148
            aload 1 /* buffer */
            aload 0 /* uuid */
            invokevirtual java.util.UUID.getLeastSignificantBits:()J
            invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
            pop
         3: .line 149
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         4: .line 150
            aload 1 /* buffer */
            areturn
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    uuid  Ljava/util/UUID;
            1    5     1  buffer  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      uuid  

  public static byte[] decompose(java.util.UUID);
    descriptor: (Ljava/util/UUID;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 156
            aload 0 /* uuid */
            invokevirtual java.util.UUID.getMostSignificantBits:()J
            lstore 1 /* most */
        start local 1 // long most
         1: .line 157
            aload 0 /* uuid */
            invokevirtual java.util.UUID.getLeastSignificantBits:()J
            lstore 3 /* least */
        start local 3 // long least
         2: .line 158
            bipush 16
            newarray 8
            astore 5 /* b */
        start local 5 // byte[] b
         3: .line 159
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 8
         5: .line 161
      StackMap locals: java.util.UUID long long byte[] int
      StackMap stack:
            aload 5 /* b */
            iload 6 /* i */
            lload 1 /* most */
            bipush 7
            iload 6 /* i */
            isub
            bipush 8
            imul
            lushr
            l2i
            i2b
            bastore
         6: .line 162
            aload 5 /* b */
            bipush 8
            iload 6 /* i */
            iadd
            lload 3 /* least */
            bipush 7
            iload 6 /* i */
            isub
            bipush 8
            imul
            lushr
            l2i
            i2b
            bastore
         7: .line 159
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 6 /* i */
            bipush 8
            if_icmplt 5
        end local 6 // int i
         9: .line 164
            aload 5 /* b */
            areturn
        end local 5 // byte[] b
        end local 3 // long least
        end local 1 // long most
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   uuid  Ljava/util/UUID;
            1   10     1   most  J
            2   10     3  least  J
            3   10     5      b  [B
            4    9     6      i  I
    MethodParameters:
      Name  Flags
      uuid  

  public static byte[] getTimeUUIDBytes();
    descriptor: ()[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 175
            getstatic org.apache.cassandra.utils.UUIDGen.instance:Lorg/apache/cassandra/utils/UUIDGen;
            invokevirtual org.apache.cassandra.utils.UUIDGen.createTimeSafe:()J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTimeUUIDBytes:(J)[B
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.util.UUID minTimeUUID(long);
    descriptor: (J)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // long timestamp
         0: .line 186
            new java.util.UUID
            dup
            lload 0 /* timestamp */
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(J)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            ldc -9187201950435737472
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 0 // long timestamp
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  timestamp  J
    MethodParameters:
           Name  Flags
      timestamp  

  public static java.util.UUID maxTimeUUID(long);
    descriptor: (J)Ljava/util/UUID;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // long timestamp
         0: .line 201
            lload 0 /* timestamp */
            lconst_1
            ladd
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(J)J
            lconst_1
            lsub
            lstore 2 /* uuidTstamp */
        start local 2 // long uuidTstamp
         1: .line 202
            new java.util.UUID
            dup
            lload 2 /* uuidTstamp */
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            ldc 9187201950435737471
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 2 // long uuidTstamp
        end local 0 // long timestamp
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0   timestamp  J
            1    2     2  uuidTstamp  J
    MethodParameters:
           Name  Flags
      timestamp  

  public static long unixTimestamp(java.util.UUID);
    descriptor: (Ljava/util/UUID;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 211
            aload 0 /* uuid */
            invokevirtual java.util.UUID.timestamp:()J
            ldc 10000
            ldiv
            ldc -12219292800000
            ladd
            lreturn
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  uuid  Ljava/util/UUID;
    MethodParameters:
      Name  Flags
      uuid  

  public static int unixTimestampInSec(java.util.UUID);
    descriptor: (Ljava/util/UUID;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 220
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            aload 0 /* uuid */
            invokestatic org.apache.cassandra.utils.UUIDGen.unixTimestamp:(Ljava/util/UUID;)J
            invokevirtual java.util.concurrent.TimeUnit.toSeconds:(J)J
            invokestatic com.google.common.primitives.Ints.checkedCast:(J)I
            ireturn
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  uuid  Ljava/util/UUID;
    MethodParameters:
      Name  Flags
      uuid  

  public static long microsTimestamp(java.util.UUID);
    descriptor: (Ljava/util/UUID;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 229
            aload 0 /* uuid */
            invokevirtual java.util.UUID.timestamp:()J
            ldc 10
            ldiv
            ldc -12219292800000000
            ladd
            lreturn
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  uuid  Ljava/util/UUID;
    MethodParameters:
      Name  Flags
      uuid  

  private static long fromUnixTimestamp(long);
    descriptor: (J)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long timestamp
         0: .line 238
            lload 0 /* timestamp */
            lconst_0
            invokestatic org.apache.cassandra.utils.UUIDGen.fromUnixTimestamp:(JJ)J
            lreturn
        end local 0 // long timestamp
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  timestamp  J
    MethodParameters:
           Name  Flags
      timestamp  

  private static long fromUnixTimestamp(long, long);
    descriptor: (JJ)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // long timestamp
        start local 2 // long nanos
         0: .line 243
            lload 0 /* timestamp */
            ldc -12219292800000
            lsub
            ldc 10000
            lmul
            lload 2 /* nanos */
            ladd
            lreturn
        end local 2 // long nanos
        end local 0 // long timestamp
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  timestamp  J
            0    1     2      nanos  J
    MethodParameters:
           Name  Flags
      timestamp  
      nanos      

  public static byte[] getTimeUUIDBytes(long, int);
    descriptor: (JI)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // long timeMillis
        start local 2 // int nanos
         0: .line 260
            iload 2 /* nanos */
            sipush 10000
            if_icmplt 2
         1: .line 261
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 262
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.utils.UUIDGen.instance:Lorg/apache/cassandra/utils/UUIDGen;
            lload 0 /* timeMillis */
            iload 2 /* nanos */
            invokevirtual org.apache.cassandra.utils.UUIDGen.createTimeUnsafe:(JI)J
            invokestatic org.apache.cassandra.utils.UUIDGen.createTimeUUIDBytes:(J)[B
            areturn
        end local 2 // int nanos
        end local 0 // long timeMillis
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  timeMillis  J
            0    3     2       nanos  I
    MethodParameters:
            Name  Flags
      timeMillis  
      nanos       

  private static byte[] createTimeUUIDBytes(long);
    descriptor: (J)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=1
        start local 0 // long msb
         0: .line 267
            getstatic org.apache.cassandra.utils.UUIDGen.clockSeqAndNode:J
            lstore 2 /* lsb */
        start local 2 // long lsb
         1: .line 268
            bipush 16
            newarray 8
            astore 4 /* uuidBytes */
        start local 4 // byte[] uuidBytes
         2: .line 270
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 6
         4: .line 271
      StackMap locals: long byte[] int
      StackMap stack:
            aload 4 /* uuidBytes */
            iload 5 /* i */
            lload 0 /* msb */
            bipush 8
            bipush 7
            iload 5 /* i */
            isub
            imul
            lushr
            l2i
            i2b
            bastore
         5: .line 270
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 5 /* i */
            bipush 8
            if_icmplt 4
        end local 5 // int i
         7: .line 273
            bipush 8
            istore 5 /* i */
        start local 5 // int i
         8: goto 11
         9: .line 274
      StackMap locals:
      StackMap stack:
            aload 4 /* uuidBytes */
            iload 5 /* i */
            lload 2 /* lsb */
            bipush 8
            bipush 7
            iload 5 /* i */
            isub
            imul
            lushr
            l2i
            i2b
            bastore
        10: .line 273
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            bipush 16
            if_icmplt 9
        end local 5 // int i
        12: .line 276
            aload 4 /* uuidBytes */
            areturn
        end local 4 // byte[] uuidBytes
        end local 2 // long lsb
        end local 0 // long msb
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0        msb  J
            1   13     2        lsb  J
            2   13     4  uuidBytes  [B
            3    7     5          i  I
            8   12     5          i  I
    MethodParameters:
      Name  Flags
      msb   

  public static long getAdjustedTimestamp(java.util.UUID);
    descriptor: (Ljava/util/UUID;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.util.UUID uuid
         0: .line 288
            aload 0 /* uuid */
            invokevirtual java.util.UUID.version:()I
            iconst_1
            if_icmpeq 2
         1: .line 289
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "incompatible with uuid version: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* uuid */
            invokevirtual java.util.UUID.version:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* uuid */
            invokevirtual java.util.UUID.timestamp:()J
            ldc 10000
            ldiv
            ldc -12219292800000
            ladd
            lreturn
        end local 0 // java.util.UUID uuid
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  uuid  Ljava/util/UUID;
    MethodParameters:
      Name  Flags
      uuid  

  private static long makeClockSeqAndNode();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=0
         0: .line 295
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            invokevirtual java.security.SecureRandom.nextLong:()J
            lstore 0 /* clock */
        start local 0 // long clock
         1: .line 297
            lconst_0
            lstore 2 /* lsb */
        start local 2 // long lsb
         2: .line 298
            lload 2 /* lsb */
            ldc -9223372036854775808
            lor
            lstore 2 /* lsb */
         3: .line 299
            lload 2 /* lsb */
            lload 0 /* clock */
            ldc 16383
            land
            bipush 48
            lshl
            lor
            lstore 2 /* lsb */
         4: .line 300
            lload 2 /* lsb */
            invokestatic org.apache.cassandra.utils.UUIDGen.makeNode:()J
            lor
            lstore 2 /* lsb */
         5: .line 301
            lload 2 /* lsb */
            lreturn
        end local 2 // long lsb
        end local 0 // long clock
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1    6     0  clock  J
            2    6     2    lsb  J

  private long createTimeSafe();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // org.apache.cassandra.utils.UUIDGen this
         0: .line 312
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc -12219292800000
            lsub
            ldc 10000
            lmul
            lstore 1 /* newLastNanos */
        start local 1 // long newLastNanos
         1: .line 313
            aload 0 /* this */
            getfield org.apache.cassandra.utils.UUIDGen.lastNanos:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 3 /* originalLastNanos */
        start local 3 // long originalLastNanos
         2: .line 314
            lload 1 /* newLastNanos */
            lload 3 /* originalLastNanos */
            lcmp
            ifle 5
         3: .line 317
            aload 0 /* this */
            getfield org.apache.cassandra.utils.UUIDGen.lastNanos:Ljava/util/concurrent/atomic/AtomicLong;
            lload 3 /* originalLastNanos */
            lload 1 /* newLastNanos */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         4: .line 319
            goto 6
         5: .line 326
      StackMap locals: long long
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.UUIDGen.lastNanos:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lstore 1 /* newLastNanos */
        end local 3 // long originalLastNanos
         6: .line 330
      StackMap locals:
      StackMap stack:
            lload 1 /* newLastNanos */
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            lreturn
        end local 1 // long newLastNanos
        end local 0 // org.apache.cassandra.utils.UUIDGen this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Lorg/apache/cassandra/utils/UUIDGen;
            1    7     1       newLastNanos  J
            2    6     3  originalLastNanos  J

  private long createTimeUnsafe(long, int);
    descriptor: (JI)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.apache.cassandra.utils.UUIDGen this
        start local 1 // long when
        start local 3 // int nanos
         0: .line 335
            lload 1 /* when */
            ldc -12219292800000
            lsub
            ldc 10000
            lmul
            iload 3 /* nanos */
            i2l
            ladd
            lstore 4 /* nanosSince */
        start local 4 // long nanosSince
         1: .line 336
            lload 4 /* nanosSince */
            invokestatic org.apache.cassandra.utils.UUIDGen.createTime:(J)J
            lreturn
        end local 4 // long nanosSince
        end local 3 // int nanos
        end local 1 // long when
        end local 0 // org.apache.cassandra.utils.UUIDGen this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/apache/cassandra/utils/UUIDGen;
            0    2     1        when  J
            0    2     3       nanos  I
            1    2     4  nanosSince  J
    MethodParameters:
       Name  Flags
      when   
      nanos  

  private static long createTime(long);
    descriptor: (J)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // long nanosSince
         0: .line 341
            lconst_0
            lstore 2 /* msb */
        start local 2 // long msb
         1: .line 342
            lload 2 /* msb */
            ldc 4294967295
            lload 0 /* nanosSince */
            land
            bipush 32
            lshl
            lor
            lstore 2 /* msb */
         2: .line 343
            lload 2 /* msb */
            ldc 281470681743360
            lload 0 /* nanosSince */
            land
            bipush 16
            lushr
            lor
            lstore 2 /* msb */
         3: .line 344
            lload 2 /* msb */
            ldc -281474976710656
            lload 0 /* nanosSince */
            land
            bipush 48
            lushr
            lor
            lstore 2 /* msb */
         4: .line 345
            lload 2 /* msb */
            ldc 4096
            lor
            lstore 2 /* msb */
         5: .line 346
            lload 2 /* msb */
            lreturn
        end local 2 // long msb
        end local 0 // long nanosSince
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0  nanosSince  J
            1    6     2         msb  J
    MethodParameters:
            Name  Flags
      nanosSince  

  private static long makeNode();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=0
         0: .line 362
            invokestatic org.apache.cassandra.utils.FBUtilities.getAllLocalAddresses:()Ljava/util/Collection;
            astore 0 /* localAddresses */
        start local 0 // java.util.Collection localAddresses
         1: .line 363
            aload 0 /* localAddresses */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 3
         2: .line 364
            new java.lang.RuntimeException
            dup
            ldc "Cannot generate the node component of the UUID because cannot retrieve any IP addresses."
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 367
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 0 /* localAddresses */
            invokestatic org.apache.cassandra.utils.UUIDGen.hash:(Ljava/util/Collection;)[B
            astore 1 /* hash */
        start local 1 // byte[] hash
         4: .line 368
            lconst_0
            lstore 2 /* node */
        start local 2 // long node
         5: .line 369
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         6: goto 9
         7: .line 370
      StackMap locals: byte[] long int
      StackMap stack:
            lload 2 /* node */
            ldc 255
            aload 1 /* hash */
            iload 4 /* i */
            baload
            i2l
            land
            iconst_5
            iload 4 /* i */
            isub
            bipush 8
            imul
            lshl
            lor
            lstore 2 /* node */
         8: .line 369
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* i */
            bipush 6
            aload 1 /* hash */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            if_icmplt 7
        end local 4 // int i
        10: .line 371
            getstatic org.apache.cassandra.utils.UUIDGen.$assertionsDisabled:Z
            ifne 11
            ldc -72057594037927936
            lload 2 /* node */
            land
            lconst_0
            lcmp
            ifeq 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 375
      StackMap locals:
      StackMap stack:
            lload 2 /* node */
            ldc 1099511627776
            lor
            lreturn
        end local 2 // long node
        end local 1 // byte[] hash
        end local 0 // java.util.Collection localAddresses
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            1   12     0  localAddresses  Ljava/util/Collection<Ljava/net/InetAddress;>;
            4   12     1            hash  [B
            5   12     2            node  J
            6   10     4               i  I

  private static byte[] hash(java.util.Collection<java.net.InetAddress>);
    descriptor: (Ljava/util/Collection;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.util.Collection data
         0: .line 383
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 1 /* messageDigest */
        start local 1 // java.security.MessageDigest messageDigest
         1: .line 384
            aload 0 /* data */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.util.Collection java.security.MessageDigest top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 2 /* addr */
        start local 2 // java.net.InetAddress addr
         3: .line 385
            aload 1 /* messageDigest */
            aload 2 /* addr */
            invokevirtual java.net.InetAddress.getAddress:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        end local 2 // java.net.InetAddress addr
         4: .line 384
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 388
            invokestatic org.apache.cassandra.utils.NativeLibrary.getProcessID:()J
            lstore 2 /* pid */
        start local 2 // long pid
         6: .line 389
            lload 2 /* pid */
            lconst_0
            lcmp
            ifge 8
         7: .line 390
            new java.util.Random
            dup
            invokestatic java.lang.System.currentTimeMillis:()J
            invokespecial java.util.Random.<init>:(J)V
            invokevirtual java.util.Random.nextLong:()J
            lstore 2 /* pid */
         8: .line 391
      StackMap locals: java.util.Collection java.security.MessageDigest long
      StackMap stack:
            aload 1 /* messageDigest */
            lload 2 /* pid */
            invokestatic org.apache.cassandra.utils.FBUtilities.updateWithLong:(Ljava/security/MessageDigest;J)V
         9: .line 393
            ldc Lorg/apache/cassandra/utils/UUIDGen;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* loader */
        start local 4 // java.lang.ClassLoader loader
        10: .line 394
            aload 4 /* loader */
            ifnull 11
            aload 4 /* loader */
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            goto 12
      StackMap locals: java.lang.ClassLoader
      StackMap stack:
        11: iconst_0
      StackMap locals:
      StackMap stack: int
        12: istore 5 /* loaderId */
        start local 5 // int loaderId
        13: .line 395
            aload 1 /* messageDigest */
            iload 5 /* loaderId */
            invokestatic org.apache.cassandra.utils.FBUtilities.updateWithInt:(Ljava/security/MessageDigest;I)V
        14: .line 397
            aload 1 /* messageDigest */
            invokevirtual java.security.MessageDigest.digest:()[B
        15: areturn
        end local 5 // int loaderId
        end local 4 // java.lang.ClassLoader loader
        end local 2 // long pid
        end local 1 // java.security.MessageDigest messageDigest
        16: .line 399
      StackMap locals: java.util.Collection
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* nsae */
        start local 1 // java.security.NoSuchAlgorithmException nsae
        17: .line 401
            new java.lang.RuntimeException
            dup
            ldc "MD5 digest algorithm is not available"
            aload 1 /* nsae */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.NoSuchAlgorithmException nsae
        end local 0 // java.util.Collection data
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           data  Ljava/util/Collection<Ljava/net/InetAddress;>;
            1   16     1  messageDigest  Ljava/security/MessageDigest;
            3    4     2           addr  Ljava/net/InetAddress;
            6   16     2            pid  J
           10   16     4         loader  Ljava/lang/ClassLoader;
           13   16     5       loaderId  I
           17   18     1           nsae  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           0    15      16  Class java.security.NoSuchAlgorithmException
    Signature: (Ljava/util/Collection<Ljava/net/InetAddress;>;)[B
    MethodParameters:
      Name  Flags
      data  
}
SourceFile: "UUIDGen.java"