public final class io.netty.util.internal.ThreadLocalRandom extends java.util.Random
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.util.internal.ThreadLocalRandom
  super_class: java.util.Random
{
  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.concurrent.atomic.AtomicLong seedUniquifier;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static volatile long initialSeedUniquifier;
    descriptor: J
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static final java.lang.Thread seedGeneratorThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.concurrent.BlockingQueue<java.lang.Long> seedQueue;
    descriptor: Ljava/util/concurrent/BlockingQueue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/BlockingQueue<Ljava/lang/Long;>;

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

  private static volatile long seedGeneratorEndTime;
    descriptor: J
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

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

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

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

  private long rnd;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  boolean initialized;
    descriptor: Z
    flags: (0x0000) 

  private long pad0;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad1;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad2;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad3;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad4;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad5;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad6;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long pad7;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 63
            ldc Lio/netty/util/internal/ThreadLocalRandom;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
            putstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
         1: .line 65
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 75
            ldc "io.netty.initialSeedUniquifier"
            lconst_0
            invokestatic io.netty.util.internal.SystemPropertyUtil.getLong:(Ljava/lang/String;J)J
            putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
         3: .line 76
            getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
            lconst_0
            lcmp
            ifne 18
         4: .line 77
            ldc "java.util.secureRandomSeed"
            iconst_0
            invokestatic io.netty.util.internal.SystemPropertyUtil.getBoolean:(Ljava/lang/String;Z)Z
            istore 0 /* secureRandom */
        start local 0 // boolean secureRandom
         5: .line 78
            iload 0 /* secureRandom */
            ifeq 13
         6: .line 79
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
            putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
         7: .line 80
            invokestatic java.lang.System.nanoTime:()J
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
         8: .line 84
            new io.netty.util.internal.ThreadLocalRandom$1
            dup
            ldc "initialSeedUniquifierGenerator"
            invokespecial io.netty.util.internal.ThreadLocalRandom$1.<init>:(Ljava/lang/String;)V
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
         9: .line 101
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
        10: .line 102
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
            new io.netty.util.internal.ThreadLocalRandom$2
            dup
            invokespecial io.netty.util.internal.ThreadLocalRandom$2.<init>:()V
            invokevirtual java.lang.Thread.setUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V
        11: .line 108
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        12: .line 109
            goto 21
        13: .line 110
      StackMap locals: int
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            invokestatic io.netty.util.internal.ThreadLocalRandom.mix64:(J)J
            invokestatic java.lang.System.nanoTime:()J
            invokestatic io.netty.util.internal.ThreadLocalRandom.mix64:(J)J
            lxor
            putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
        14: .line 111
            aconst_null
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
        15: .line 112
            aconst_null
            putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
        16: .line 113
            lconst_0
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
        end local 0 // boolean secureRandom
        17: .line 115
            goto 21
        18: .line 116
      StackMap locals:
      StackMap stack:
            aconst_null
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
        19: .line 117
            aconst_null
            putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
        20: .line 118
            lconst_0
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
        21: .line 385
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            5   17     0  secureRandom  Z

  public static void setInitialSeedUniquifier(long);
    descriptor: (J)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // long initialSeedUniquifier
         0: .line 123
            lload 0 /* initialSeedUniquifier */
            putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
         1: .line 124
            return
        end local 0 // long initialSeedUniquifier
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    2     0  initialSeedUniquifier  J
    MethodParameters:
                       Name  Flags
      initialSeedUniquifier  

  public static long getInitialSeedUniquifier();
    descriptor: ()J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=0
         0: .line 128
            getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
            lstore 0 /* initialSeedUniquifier */
        start local 0 // long initialSeedUniquifier
         1: .line 129
            lload 0 /* initialSeedUniquifier */
            lconst_0
            lcmp
            ifeq 3
         2: .line 130
            lload 0 /* initialSeedUniquifier */
            lreturn
         3: .line 133
      StackMap locals: long
      StackMap stack:
            ldc Lio/netty/util/internal/ThreadLocalRandom;
            dup
            astore 2
            monitorenter
         4: .line 134
            getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
            lstore 0 /* initialSeedUniquifier */
         5: .line 135
            lload 0 /* initialSeedUniquifier */
            lconst_0
            lcmp
            ifeq 8
         6: .line 136
            lload 0 /* initialSeedUniquifier */
            aload 2
            monitorexit
         7: lreturn
         8: .line 141
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 3
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            ladd
            lstore 3 /* deadLine */
        start local 3 // long deadLine
         9: .line 142
            iconst_0
            istore 5 /* interrupted */
        start local 5 // boolean interrupted
        10: .line 144
      StackMap locals: long int
      StackMap stack:
            lload 3 /* deadLine */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 6 /* waitTime */
        start local 6 // long waitTime
        11: .line 147
            lload 6 /* waitTime */
            lconst_0
            lcmp
            ifgt 14
        12: .line 148
            getstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.poll:()Ljava/lang/Object;
            checkcast java.lang.Long
            astore 8 /* seed */
        start local 8 // java.lang.Long seed
        13: .line 149
            goto 15
        end local 8 // java.lang.Long seed
        14: .line 150
      StackMap locals: long
      StackMap stack:
            getstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
            lload 6 /* waitTime */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.BlockingQueue.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 8 /* seed */
        start local 8 // java.lang.Long seed
        15: .line 153
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 8 /* seed */
            ifnull 22
        16: .line 154
            aload 8 /* seed */
            invokevirtual java.lang.Long.longValue:()J
            lstore 0 /* initialSeedUniquifier */
        17: .line 155
            goto 28
        end local 8 // java.lang.Long seed
        18: .line 157
      StackMap locals: long java.lang.Class long int long
      StackMap stack: java.lang.InterruptedException
            pop
        19: .line 158
            iconst_1
            istore 5 /* interrupted */
        20: .line 159
            getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Failed to generate a seed from SecureRandom due to an InterruptedException."
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;)V
        21: .line 160
            goto 28
        22: .line 163
      StackMap locals:
      StackMap stack:
            lload 6 /* waitTime */
            lconst_0
            lcmp
            ifgt 10
        23: .line 164
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        24: .line 165
            getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
        25: .line 166
            ldc "Failed to generate a seed from SecureRandom within {} seconds. Not enough entropy?"
        26: .line 167
            ldc 3
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
        27: .line 165
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 6 // long waitTime
        28: .line 169
      StackMap locals:
      StackMap stack:
            lload 0 /* initialSeedUniquifier */
        29: .line 174
            ldc 3627065505421648153
            lxor
            lstore 0 /* initialSeedUniquifier */
        30: .line 175
            lload 0 /* initialSeedUniquifier */
            invokestatic java.lang.System.nanoTime:()J
            invokestatic java.lang.Long.reverse:(J)J
            lxor
            lstore 0 /* initialSeedUniquifier */
        31: .line 177
            lload 0 /* initialSeedUniquifier */
            putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
        32: .line 179
            iload 5 /* interrupted */
            ifeq 35
        33: .line 181
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        34: .line 185
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        35: .line 188
      StackMap locals:
      StackMap stack:
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
            lconst_0
            lcmp
            ifne 37
        36: .line 189
            invokestatic java.lang.System.nanoTime:()J
            putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
        37: .line 192
      StackMap locals:
      StackMap stack:
            lload 0 /* initialSeedUniquifier */
            aload 2
            monitorexit
        38: lreturn
        end local 5 // boolean interrupted
        end local 3 // long deadLine
        39: .line 133
      StackMap locals: long java.lang.Class
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        40: athrow
        end local 0 // long initialSeedUniquifier
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            1   41     0  initialSeedUniquifier  J
            9   39     3               deadLine  J
           10   39     5            interrupted  Z
           11   28     6               waitTime  J
           13   14     8                   seed  Ljava/lang/Long;
           15   18     8                   seed  Ljava/lang/Long;
      Exception table:
        from    to  target  type
          11    17      18  Class java.lang.InterruptedException
           4     7      39  any
           8    38      39  any
          39    40      39  any

  private static long newSeed();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=6, args_size=0
         0: .line 198
      StackMap locals:
      StackMap stack:
            getstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 0 /* current */
        start local 0 // long current
         1: .line 199
            lload 0 /* current */
            lconst_0
            lcmp
            ifeq 2
            lload 0 /* current */
            goto 3
      StackMap locals: long
      StackMap stack:
         2: invokestatic io.netty.util.internal.ThreadLocalRandom.getInitialSeedUniquifier:()J
      StackMap locals:
      StackMap stack: long
         3: lstore 2 /* actualCurrent */
        start local 2 // long actualCurrent
         4: .line 202
            lload 2 /* actualCurrent */
            ldc 181783497276652981
            lmul
            lstore 4 /* next */
        start local 4 // long next
         5: .line 204
            getstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
            lload 0 /* current */
            lload 4 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         6: .line 205
            lload 0 /* current */
            lconst_0
            lcmp
            ifne 15
            getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 15
         7: .line 206
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
            lconst_0
            lcmp
            ifeq 14
         8: .line 207
            getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
         9: .line 208
            ldc "-Dio.netty.initialSeedUniquifier: 0x%016x (took %d ms)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        10: .line 209
            lload 2 /* actualCurrent */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
        11: .line 210
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
            getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
            lsub
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
        12: .line 207
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
        13: .line 211
            goto 15
        14: .line 212
      StackMap locals: long long
      StackMap stack:
            getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "-Dio.netty.initialSeedUniquifier: 0x%016x"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            lload 2 /* actualCurrent */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
        15: .line 215
      StackMap locals:
      StackMap stack:
            lload 4 /* next */
            invokestatic java.lang.System.nanoTime:()J
            lxor
            lreturn
        end local 4 // long next
        end local 2 // long actualCurrent
        end local 0 // long current
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1   16     0        current  J
            4   16     2  actualCurrent  J
            5   16     4           next  J

  private static long mix64(long);
    descriptor: (J)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // long z
         0: .line 223
            lload 0 /* z */
            lload 0 /* z */
            bipush 33
            lushr
            lxor
            ldc -49064778989728563
            lmul
            lstore 0 /* z */
         1: .line 224
            lload 0 /* z */
            lload 0 /* z */
            bipush 33
            lushr
            lxor
            ldc -4265267296055464877
            lmul
            lstore 0 /* z */
         2: .line 225
            lload 0 /* z */
            lload 0 /* z */
            bipush 33
            lushr
            lxor
            lreturn
        end local 0 // long z
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     z  J
    MethodParameters:
      Name  Flags
      z     

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
         0: .line 255
            aload 0 /* this */
            invokestatic io.netty.util.internal.ThreadLocalRandom.newSeed:()J
            invokespecial java.util.Random.<init>:(J)V
         1: .line 256
            aload 0 /* this */
            iconst_1
            putfield io.netty.util.internal.ThreadLocalRandom.initialized:Z
         2: .line 257
            return
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/util/internal/ThreadLocalRandom;

  public static io.netty.util.internal.ThreadLocalRandom current();
    descriptor: ()Lio/netty/util/internal/ThreadLocalRandom;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 265
            invokestatic io.netty.util.internal.InternalThreadLocalMap.get:()Lio/netty/util/internal/InternalThreadLocalMap;
            invokevirtual io.netty.util.internal.InternalThreadLocalMap.random:()Lio/netty/util/internal/ThreadLocalRandom;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void setSeed(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // long seed
         0: .line 275
            aload 0 /* this */
            getfield io.netty.util.internal.ThreadLocalRandom.initialized:Z
            ifeq 2
         1: .line 276
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
         2: .line 278
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* seed */
            ldc 25214903917
            lxor
            ldc 281474976710655
            land
            putfield io.netty.util.internal.ThreadLocalRandom.rnd:J
         3: .line 279
            return
        end local 1 // long seed
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/netty/util/internal/ThreadLocalRandom;
            0    4     1  seed  J
    MethodParameters:
      Name  Flags
      seed  

  protected int next(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // int bits
         0: .line 282
            aload 0 /* this */
            aload 0 /* this */
            getfield io.netty.util.internal.ThreadLocalRandom.rnd:J
            ldc 25214903917
            lmul
            ldc 11
            ladd
            ldc 281474976710655
            land
            putfield io.netty.util.internal.ThreadLocalRandom.rnd:J
         1: .line 283
            aload 0 /* this */
            getfield io.netty.util.internal.ThreadLocalRandom.rnd:J
            bipush 48
            iload 1 /* bits */
            isub
            lushr
            l2i
            ireturn
        end local 1 // int bits
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/util/internal/ThreadLocalRandom;
            0    2     1  bits  I
    MethodParameters:
      Name  Flags
      bits  

  public int nextInt(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // int least
        start local 2 // int bound
         0: .line 297
            iload 1 /* least */
            iload 2 /* bound */
            if_icmplt 2
         1: .line 298
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 300
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* bound */
            iload 1 /* least */
            isub
            invokevirtual io.netty.util.internal.ThreadLocalRandom.nextInt:(I)I
            iload 1 /* least */
            iadd
            ireturn
        end local 2 // int bound
        end local 1 // int least
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/netty/util/internal/ThreadLocalRandom;
            0    3     1  least  I
            0    3     2  bound  I
    MethodParameters:
       Name  Flags
      least  
      bound  

  public long nextLong(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // long n
         0: .line 313
            lload 1 /* n */
            lconst_0
            lcmp
            ifgt 2
         1: .line 314
            new java.lang.IllegalArgumentException
            dup
            ldc "n must be positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 322
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 3 /* offset */
        start local 3 // long offset
         3: .line 323
            goto 12
         4: .line 324
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            iconst_2
            invokevirtual io.netty.util.internal.ThreadLocalRandom.next:(I)I
            istore 5 /* bits */
        start local 5 // int bits
         5: .line 325
            lload 1 /* n */
            iconst_1
            lushr
            lstore 6 /* half */
        start local 6 // long half
         6: .line 326
            iload 5 /* bits */
            iconst_2
            iand
            ifne 7
            lload 6 /* half */
            goto 8
      StackMap locals: int long
      StackMap stack:
         7: lload 1 /* n */
            lload 6 /* half */
            lsub
      StackMap locals:
      StackMap stack: long
         8: lstore 8 /* nextn */
        start local 8 // long nextn
         9: .line 327
            iload 5 /* bits */
            iconst_1
            iand
            ifne 11
        10: .line 328
            lload 3 /* offset */
            lload 1 /* n */
            lload 8 /* nextn */
            lsub
            ladd
            lstore 3 /* offset */
        11: .line 330
      StackMap locals: long
      StackMap stack:
            lload 8 /* nextn */
            lstore 1 /* n */
        end local 8 // long nextn
        end local 6 // long half
        end local 5 // int bits
        12: .line 323
      StackMap locals:
      StackMap stack:
            lload 1 /* n */
            ldc 2147483647
            lcmp
            ifge 4
        13: .line 332
            lload 3 /* offset */
            aload 0 /* this */
            lload 1 /* n */
            l2i
            invokevirtual io.netty.util.internal.ThreadLocalRandom.nextInt:(I)I
            i2l
            ladd
            lreturn
        end local 3 // long offset
        end local 1 // long n
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lio/netty/util/internal/ThreadLocalRandom;
            0   14     1       n  J
            3   14     3  offset  J
            5   12     5    bits  I
            6   12     6    half  J
            9   12     8   nextn  J
    MethodParameters:
      Name  Flags
      n     

  public long nextLong(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // long least
        start local 3 // long bound
         0: .line 346
            lload 1 /* least */
            lload 3 /* bound */
            lcmp
            iflt 2
         1: .line 347
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 3 /* bound */
            lload 1 /* least */
            lsub
            invokevirtual io.netty.util.internal.ThreadLocalRandom.nextLong:(J)J
            lload 1 /* least */
            ladd
            lreturn
        end local 3 // long bound
        end local 1 // long least
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/netty/util/internal/ThreadLocalRandom;
            0    3     1  least  J
            0    3     3  bound  J
    MethodParameters:
       Name  Flags
      least  
      bound  

  public double nextDouble(double);
    descriptor: (D)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // double n
         0: .line 362
            dload 1 /* n */
            dconst_0
            dcmpg
            ifgt 2
         1: .line 363
            new java.lang.IllegalArgumentException
            dup
            ldc "n must be positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 365
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.internal.ThreadLocalRandom.nextDouble:()D
            dload 1 /* n */
            dmul
            dreturn
        end local 1 // double n
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/util/internal/ThreadLocalRandom;
            0    3     1     n  D
    MethodParameters:
      Name  Flags
      n     

  public double nextDouble(double, double);
    descriptor: (DD)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // io.netty.util.internal.ThreadLocalRandom this
        start local 1 // double least
        start local 3 // double bound
         0: .line 379
            dload 1 /* least */
            dload 3 /* bound */
            dcmpl
            iflt 2
         1: .line 380
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.internal.ThreadLocalRandom.nextDouble:()D
            dload 3 /* bound */
            dload 1 /* least */
            dsub
            dmul
            dload 1 /* least */
            dadd
            dreturn
        end local 3 // double bound
        end local 1 // double least
        end local 0 // io.netty.util.internal.ThreadLocalRandom this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/netty/util/internal/ThreadLocalRandom;
            0    3     1  least  D
            0    3     3  bound  D
    MethodParameters:
       Name  Flags
      least  
      bound  
}
SourceFile: "ThreadLocalRandom.java"
NestMembers:
  io.netty.util.internal.ThreadLocalRandom$1  io.netty.util.internal.ThreadLocalRandom$2
InnerClasses:
  io.netty.util.internal.ThreadLocalRandom$1
  io.netty.util.internal.ThreadLocalRandom$2
  public abstract UncaughtExceptionHandler = java.lang.Thread$UncaughtExceptionHandler of java.lang.Thread