public final class com.lmax.disruptor.util.Util
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.lmax.disruptor.util.Util
  super_class: java.lang.Object
{
  private static final sun.misc.Unsafe THE_UNSAFE;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 99
            new com.lmax.disruptor.util.Util$1
            dup
            invokespecial com.lmax.disruptor.util.Util$1.<init>:()V
            astore 0 /* action */
        start local 0 // java.security.PrivilegedExceptionAction action
         1: .line 109
            aload 0 /* action */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast sun.misc.Unsafe
            putstatic com.lmax.disruptor.util.Util.THE_UNSAFE:Lsun/misc/Unsafe;
        end local 0 // java.security.PrivilegedExceptionAction action
         2: .line 110
            goto 5
         3: .line 111
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 0 /* e */
        start local 0 // java.lang.Exception e
         4: .line 113
            new java.lang.RuntimeException
            dup
            ldc "Unable to load unsafe"
            aload 0 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.Exception e
         5: .line 115
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    2     0  action  Ljava/security/PrivilegedExceptionAction<Lsun/misc/Unsafe;>;
            4    5     0       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Exception

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.util.Util this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.lmax.disruptor.util.Util this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/util/Util;

  public static int ceilingNextPowerOfTwo(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int x
         0: .line 42
            iconst_1
            bipush 32
            iload 0 /* x */
            iconst_1
            isub
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            isub
            ishl
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
    MethodParameters:
      Name  Flags
      x     final

  public static long getMinimumSequence(com.lmax.disruptor.Sequence[]);
    descriptor: ([Lcom/lmax/disruptor/Sequence;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.Sequence[] sequences
         0: .line 53
            aload 0 /* sequences */
            ldc 9223372036854775807
            invokestatic com.lmax.disruptor.util.Util.getMinimumSequence:([Lcom/lmax/disruptor/Sequence;J)J
            lreturn
        end local 0 // com.lmax.disruptor.Sequence[] sequences
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  sequences  [Lcom/lmax/disruptor/Sequence;
    MethodParameters:
           Name  Flags
      sequences  final

  public static long getMinimumSequence(com.lmax.disruptor.Sequence[], long);
    descriptor: ([Lcom/lmax/disruptor/Sequence;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // com.lmax.disruptor.Sequence[] sequences
        start local 1 // long minimum
         0: .line 67
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         1: aload 0 /* sequences */
            arraylength
            istore 4 /* n */
        start local 4 // int n
         2: goto 6
         3: .line 69
      StackMap locals: int int
      StackMap stack:
            aload 0 /* sequences */
            iload 3 /* i */
            aaload
            invokevirtual com.lmax.disruptor.Sequence.get:()J
            lstore 5 /* value */
        start local 5 // long value
         4: .line 70
            lload 1 /* minimum */
            lload 5 /* value */
            invokestatic java.lang.Math.min:(JJ)J
            lstore 1 /* minimum */
        end local 5 // long value
         5: .line 67
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            iload 4 /* n */
            if_icmplt 3
        end local 4 // int n
        end local 3 // int i
         7: .line 73
            lload 1 /* minimum */
            lreturn
        end local 1 // long minimum
        end local 0 // com.lmax.disruptor.Sequence[] sequences
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0  sequences  [Lcom/lmax/disruptor/Sequence;
            0    8     1    minimum  J
            1    7     3          i  I
            2    7     4          n  I
            4    5     5      value  J
    MethodParameters:
           Name  Flags
      sequences  final
      minimum    

  public static com.lmax.disruptor.Sequence[] getSequencesFor(com.lmax.disruptor.EventProcessor[]);
    descriptor: ([Lcom/lmax/disruptor/EventProcessor;)[Lcom/lmax/disruptor/Sequence;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.lmax.disruptor.EventProcessor[] processors
         0: .line 84
            aload 0 /* processors */
            arraylength
            anewarray com.lmax.disruptor.Sequence
            astore 1 /* sequences */
        start local 1 // com.lmax.disruptor.Sequence[] sequences
         1: .line 85
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 87
      StackMap locals: com.lmax.disruptor.Sequence[] int
      StackMap stack:
            aload 1 /* sequences */
            iload 2 /* i */
            aload 0 /* processors */
            iload 2 /* i */
            aaload
            invokeinterface com.lmax.disruptor.EventProcessor.getSequence:()Lcom/lmax/disruptor/Sequence;
            aastore
         4: .line 85
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 1 /* sequences */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 90
            aload 1 /* sequences */
            areturn
        end local 1 // com.lmax.disruptor.Sequence[] sequences
        end local 0 // com.lmax.disruptor.EventProcessor[] processors
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0  processors  [Lcom/lmax/disruptor/EventProcessor;
            1    7     1   sequences  [Lcom/lmax/disruptor/Sequence;
            2    6     2           i  I
    MethodParameters:
            Name  Flags
      processors  final

  public static sun.misc.Unsafe getUnsafe();
    descriptor: ()Lsun/misc/Unsafe;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 125
            getstatic com.lmax.disruptor.util.Util.THE_UNSAFE:Lsun/misc/Unsafe;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static int log2(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // int i
         0: .line 137
            iconst_0
            istore 1 /* r */
        start local 1 // int r
         1: .line 138
            goto 3
         2: .line 140
      StackMap locals: int
      StackMap stack:
            iinc 1 /* r */ 1
         3: .line 138
      StackMap locals:
      StackMap stack:
            iload 0 /* i */
            iconst_1
            ishr
            dup
            istore 0 /* i */
            ifne 2
         4: .line 142
            iload 1 /* r */
            ireturn
        end local 1 // int r
        end local 0 // int i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     i  I
            1    5     1     r  I
    MethodParameters:
      Name  Flags
      i     
}
SourceFile: "Util.java"
NestMembers:
  com.lmax.disruptor.util.Util$1
InnerClasses:
  com.lmax.disruptor.util.Util$1