public class io.ebeaninternal.server.idgen.UuidV1RndIdGenerator implements io.ebean.config.dbplatform.PlatformIdGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.ebeaninternal.server.idgen.UuidV1RndIdGenerator
  super_class: java.lang.Object
{
  protected static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final long UUID_EPOCH_OFFSET;
    descriptor: J
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 122192928000000000

  protected static final long MILLIS_TO_UUID;
    descriptor: J
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 10000

  public static final io.ebeaninternal.server.idgen.UuidV1RndIdGenerator INSTANCE;
    descriptor: Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  protected final java.util.concurrent.atomic.AtomicInteger clockSeq;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final java.security.SecureRandom numberGenerator;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected java.util.concurrent.atomic.AtomicLong timeStamp;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0004) ACC_PROTECTED

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

  private final java.util.concurrent.locks.ReentrantLock lock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 30
            ldc "io.ebean.IDGEN"
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/String;)Lorg/slf4j/Logger;
            putstatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.logger:Lorg/slf4j/Logger;
         1: .line 38
            new io.ebeaninternal.server.idgen.UuidV1RndIdGenerator
            dup
            invokespecial io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.<init>:()V
            putstatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.INSTANCE:Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static long currentUuidTime();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 57
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 10000
            lmul
            ldc 122192928000000000
            ladd
            lreturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokestatic java.lang.Math.random:()D
            ldc 16383.0
            dmul
            d2i
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.clockSeq:Ljava/util/concurrent/atomic/AtomicInteger;
         2: .line 42
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.numberGenerator:Ljava/security/SecureRandom;
         3: .line 44
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokestatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.currentUuidTime:()J
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.timeStamp:Ljava/util/concurrent/atomic/AtomicLong;
         4: .line 46
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokestatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.currentUuidTime:()J
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.nanoToMilliOffset:Ljava/util/concurrent/atomic/AtomicLong;
         5: .line 48
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.lock:Ljava/util/concurrent/locks/ReentrantLock;
         6: .line 61
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.computeNanoOffset:()V
         7: .line 62
            return
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;

  protected void computeNanoOffset();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 68
            invokestatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.currentUuidTime:()J
            lstore 1 /* currentTime */
        start local 1 // long currentTime
         1: .line 69
            invokestatic java.lang.System.nanoTime:()J
            ldc 100
            ldiv
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.nanoToMilliOffset:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            ladd
            lstore 3 /* fromNanos */
        start local 3 // long fromNanos
         2: .line 70
            lload 1 /* currentTime */
            lload 3 /* fromNanos */
            lsub
            lstore 5 /* offset */
        start local 5 // long offset
         3: .line 71
            lload 5 /* offset */
            invokestatic java.lang.Math.abs:(J)J
            ldc 10000000
            lcmp
            ifle 5
         4: .line 72
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.nanoToMilliOffset:Ljava/util/concurrent/atomic/AtomicLong;
            lload 5 /* offset */
            invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
            pop2
         5: .line 74
      StackMap locals: long long long
      StackMap stack:
            return
        end local 5 // long offset
        end local 3 // long fromNanos
        end local 1 // long currentTime
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
            1    6     1  currentTime  J
            2    6     3    fromNanos  J
            3    6     5       offset  J

  protected void saveState();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 81
            return
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;

  protected byte[] getNodeIdBytes();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 87
            bipush 6
            newarray 8
            astore 1 /* idBytes */
        start local 1 // byte[] idBytes
         1: .line 88
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.numberGenerator:Ljava/security/SecureRandom;
            aload 1 /* idBytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         2: .line 89
            aload 1 /* idBytes */
            iconst_0
            dup2
            baload
            iconst_1
            ior
            i2b
            bastore
         3: .line 90
            aload 1 /* idBytes */
            areturn
        end local 1 // byte[] idBytes
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
            1    4     1  idBytes  [B

  public java.util.UUID nextId(io.ebean.Transaction);
    descriptor: (Lio/ebean/Transaction;)Ljava/util/UUID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=13, args_size=2
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
        start local 1 // io.ebean.Transaction t
         0: .line 98
            invokestatic java.lang.System.nanoTime:()J
            ldc 100
            ldiv
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.nanoToMilliOffset:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            ladd
            lstore 2 /* current */
        start local 2 // long current
         1: .line 103
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.clockSeq:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            istore 6 /* seq */
        start local 6 // int seq
         2: .line 105
      StackMap locals: io.ebeaninternal.server.idgen.UuidV1RndIdGenerator io.ebean.Transaction long top top int
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.timeStamp:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 7 /* last */
        start local 7 // long last
         3: .line 107
            lload 2 /* current */
            lload 7 /* last */
            lsub
            lstore 4 /* delta */
        start local 4 // long delta
         4: .line 108
            lload 4 /* delta */
            ldc -200000000
            lcmp
            ifge 18
         5: .line 109
            getstatic io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.logger:Lorg/slf4j/Logger;
            ldc "Clock skew of {} ms detected"
            lload 4 /* delta */
            ldc -10000
            ldiv
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 112
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         7: .line 114
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.clockSeq:Ljava/util/concurrent/atomic/AtomicInteger;
            iload 6 /* seq */
            iload 6 /* seq */
            iconst_1
            iadd
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifeq 12
         8: .line 115
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.timeStamp:Ljava/util/concurrent/atomic/AtomicLong;
            lload 2 /* current */
            invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
         9: .line 116
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.saveState:()V
        10: .line 117
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.computeNanoOffset:()V
        11: .line 118
            goto 17
        12: .line 122
      StackMap locals: io.ebeaninternal.server.idgen.UuidV1RndIdGenerator io.ebean.Transaction long long int long
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 119
            goto 2
        14: .line 121
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        15: .line 122
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        16: .line 123
            aload 9
            athrow
        17: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        18: .line 126
      StackMap locals:
      StackMap stack:
            lload 4 /* delta */
            lconst_0
            lcmp
            ifle 20
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.timeStamp:Ljava/util/concurrent/atomic/AtomicLong;
            lload 7 /* last */
            lload 2 /* current */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 20
        19: .line 127
            goto 22
        20: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.timeStamp:Ljava/util/concurrent/atomic/AtomicLong;
            lload 7 /* last */
            lload 7 /* last */
            lconst_1
            ladd
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 2
        21: .line 130
            lload 7 /* last */
            lconst_1
            ladd
            lstore 2 /* current */
        end local 7 // long last
        22: .line 135
      StackMap locals:
      StackMap stack:
            iload 6 /* seq */
            aload 0 /* this */
            getfield io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.clockSeq:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            if_icmpne 1
        23: .line 138
            lload 4 /* delta */
            ldc 600000000
            lcmp
            ifle 26
        24: .line 139
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.saveState:()V
        25: .line 140
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.computeNanoOffset:()V
        26: .line 143
      StackMap locals:
      StackMap stack:
            lload 2 /* current */
            bipush 32
            lshl
            lstore 7 /* msb */
        start local 7 // long msb
        27: .line 144
            lload 7 /* msb */
            lload 2 /* current */
            ldc 281470681743360
            land
            bipush 16
            lshr
            lor
            lstore 7 /* msb */
        28: .line 145
            lload 7 /* msb */
            ldc 4096
            lload 2 /* current */
            bipush 48
            lshr
            ldc 4095
            land
            lor
            lor
            lstore 7 /* msb */
        29: .line 147
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.getNodeIdBytes:()[B
            astore 9 /* idBytes */
        start local 9 // byte[] idBytes
        30: .line 149
            lconst_0
            lstore 10 /* lsb */
        start local 10 // long lsb
        31: .line 150
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        32: goto 35
        33: .line 151
      StackMap locals: io.ebeaninternal.server.idgen.UuidV1RndIdGenerator io.ebean.Transaction long long int long byte[] long int
      StackMap stack:
            lload 10 /* lsb */
            bipush 8
            lshl
            aload 9 /* idBytes */
            iload 12 /* i */
            baload
            sipush 255
            iand
            i2l
            lor
            lstore 10 /* lsb */
        34: .line 150
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 12 /* i */
            bipush 6
            if_icmplt 33
        end local 12 // int i
        36: .line 155
            iload 6 /* seq */
            sipush 16383
            iand
            ldc 32768
            ior
            istore 6 /* seq */
        37: .line 156
            lload 10 /* lsb */
            iload 6 /* seq */
            i2l
            bipush 48
            lshl
            lor
            lstore 10 /* lsb */
        38: .line 158
            new java.util.UUID
            dup
            lload 7 /* msb */
            lload 10 /* lsb */
            invokespecial java.util.UUID.<init>:(JJ)V
            areturn
        end local 10 // long lsb
        end local 9 // byte[] idBytes
        end local 7 // long msb
        end local 6 // int seq
        end local 4 // long delta
        end local 2 // long current
        end local 1 // io.ebean.Transaction t
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   39     0     this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
            0   39     1        t  Lio/ebean/Transaction;
            1   39     2  current  J
            4   39     4    delta  J
            2   39     6      seq  I
            3   22     7     last  J
           27   39     7      msb  J
           30   39     9  idBytes  [B
           31   39    10      lsb  J
           32   36    12        i  I
      Exception table:
        from    to  target  type
           7    12      14  any
    MethodParameters:
      Name  Flags
      t     

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 166
            ldc "uuid"
            areturn
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;

  public boolean isDbSequence();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
         0: .line 174
            iconst_0
            ireturn
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;

  public void preAllocateIds(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
        start local 1 // int allocateSize
         0: .line 183
            return
        end local 1 // int allocateSize
        end local 0 // io.ebeaninternal.server.idgen.UuidV1RndIdGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/ebeaninternal/server/idgen/UuidV1RndIdGenerator;
            0    1     1  allocateSize  I
    MethodParameters:
              Name  Flags
      allocateSize  

  public java.lang.Object nextId(io.ebean.Transaction);
    descriptor: (Lio/ebean/Transaction;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual io.ebeaninternal.server.idgen.UuidV1RndIdGenerator.nextId:(Lio/ebean/Transaction;)Ljava/util/UUID;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "UuidV1RndIdGenerator.java"