public class org.jruby.ext.securerandom.RubySecureRandom
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.ext.securerandom.RubySecureRandom
  super_class: java.lang.Object
{
  private static final int BI_ADD_BITS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 96

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ext.securerandom.RubySecureRandom this
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.jruby.ext.securerandom.RubySecureRandom this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ext/securerandom/RubySecureRandom;

  public static org.jruby.runtime.builtin.IRubyObject random_bytes(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 55
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            bipush 16
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;I)[B
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true, name = {"random_bytes"})
    MethodParameters:
         Name  Flags
      context  
      self     

  public static org.jruby.runtime.builtin.IRubyObject random_bytes(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
        start local 2 // org.jruby.runtime.builtin.IRubyObject n
         0: .line 60
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            aload 2 /* n */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)[B
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject n
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2        n  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true, name = {"random_bytes"})
    MethodParameters:
         Name  Flags
      context  
      self     
      n        

  public static org.jruby.runtime.builtin.IRubyObject gen_random(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
        start local 2 // org.jruby.runtime.builtin.IRubyObject n
         0: .line 65
            aload 0 /* context */
            aload 1 /* self */
            aload 2 /* n */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.random_bytes:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject n
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2        n  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true, name = {"gen_random", "bytes"})
    MethodParameters:
         Name  Flags
      context  
      self     
      n        

  public static org.jruby.runtime.builtin.IRubyObject hex(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 70
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            bipush 16
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;I)[B
            iconst_0
            invokestatic org.jruby.util.ConvertBytes.twosComplementToHexBytes:([BZ)[B
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true)
    MethodParameters:
         Name  Flags
      context  
      self     

  public static org.jruby.runtime.builtin.IRubyObject hex(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
        start local 2 // org.jruby.runtime.builtin.IRubyObject n
         0: .line 75
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            aload 2 /* n */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)[B
            iconst_0
            invokestatic org.jruby.util.ConvertBytes.twosComplementToHexBytes:([BZ)[B
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject n
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2        n  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true)
    MethodParameters:
         Name  Flags
      context  
      self     
      n        

  public static org.jruby.runtime.builtin.IRubyObject uuid(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 80
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            bipush 16
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;I)[B
            iconst_0
            invokestatic org.jruby.util.ConvertBytes.bytesToUUIDBytes:([BZ)[B
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true)
    MethodParameters:
         Name  Flags
      context  
      self     

  private static byte[] nextBytes(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject n
         0: .line 84
            aload 0 /* context */
            aload 1 /* n */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifeq 1
            bipush 16
            goto 2
      StackMap locals:
      StackMap stack: org.jruby.runtime.ThreadContext
         1: aload 1 /* n */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToInteger:()Lorg/jruby/RubyInteger;
            invokevirtual org.jruby.RubyInteger.getIntValue:()I
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject
      StackMap stack: org.jruby.runtime.ThreadContext int
         2: invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBytes:(Lorg/jruby/runtime/ThreadContext;I)[B
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject n
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lorg/jruby/runtime/ThreadContext;
            0    3     1        n  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      n        

  private static byte[] nextBytes(org.jruby.runtime.ThreadContext, int);
    descriptor: (Lorg/jruby/runtime/ThreadContext;I)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // int size
         0: .line 88
            iload 1 /* size */
            ifge 1
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "negative argument: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* size */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
         1: .line 90
      StackMap locals:
      StackMap stack:
            iload 1 /* size */
            newarray 8
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         2: .line 91
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.getSecureRandom:(Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
            aload 2 /* bytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         3: .line 93
            aload 2 /* bytes */
            areturn
        end local 2 // byte[] bytes
        end local 1 // int size
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  context  Lorg/jruby/runtime/ThreadContext;
            0    4     1     size  I
            2    4     2    bytes  [B
    MethodParameters:
         Name  Flags
      context  
      size     

  public static org.jruby.runtime.builtin.IRubyObject random_number(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 98
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true, name = {"random_number", "rand"})
    MethodParameters:
         Name  Flags
      context  
      self     

  public static org.jruby.runtime.builtin.IRubyObject random_number(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=10, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
        start local 2 // org.jruby.runtime.builtin.IRubyObject n
         0: .line 103
            aload 2 /* n */
            instanceof org.jruby.RubyFixnum
            ifeq 5
         1: .line 104
            aload 2 /* n */
            checkcast org.jruby.RubyFixnum
            invokevirtual org.jruby.RubyFixnum.getLongValue:()J
            lstore 3 /* bound */
        start local 3 // long bound
         2: .line 105
            lload 3 /* bound */
            lconst_0
            lcmp
            ifge 3
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            goto 4
      StackMap locals: long
      StackMap stack:
         3: aload 0 /* context */
            lconst_0
            lload 3 /* bound */
            lconst_1
            lsub
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomFixnum:(Lorg/jruby/runtime/ThreadContext;JJ)Lorg/jruby/RubyFixnum;
      StackMap locals:
      StackMap stack: org.jruby.RubyNumeric
         4: areturn
        end local 3 // long bound
         5: .line 107
      StackMap locals:
      StackMap stack:
            aload 2 /* n */
            instanceof org.jruby.RubyFloat
            ifeq 10
         6: .line 108
            aload 2 /* n */
            checkcast org.jruby.RubyFloat
            invokevirtual org.jruby.RubyFloat.getDoubleValue:()D
            dstore 3 /* bound */
        start local 3 // double bound
         7: .line 109
            dload 3 /* bound */
            dconst_0
            dcmpg
            ifge 8
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            goto 9
      StackMap locals: double
      StackMap stack:
         8: aload 0 /* context */
            dconst_0
            dload 3 /* bound */
            ldc 4.9E-324
            dsub
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;DD)Lorg/jruby/RubyFloat;
      StackMap locals:
      StackMap stack: org.jruby.RubyFloat
         9: areturn
        end local 3 // double bound
        10: .line 111
      StackMap locals:
      StackMap stack:
            aload 2 /* n */
            instanceof org.jruby.RubyBignum
            ifeq 15
        11: .line 112
            aload 2 /* n */
            checkcast org.jruby.RubyBignum
            invokevirtual org.jruby.RubyBignum.getBigIntegerValue:()Ljava/math/BigInteger;
            astore 3 /* bound */
        start local 3 // java.math.BigInteger bound
        12: .line 113
            aload 3 /* bound */
            invokevirtual java.math.BigInteger.signum:()I
            ifge 13
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            goto 14
      StackMap locals: java.math.BigInteger
      StackMap stack:
        13: aload 0 /* context */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* bound */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomBignum:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/Number;Ljava/math/BigInteger;)Lorg/jruby/RubyBignum;
      StackMap locals:
      StackMap stack: org.jruby.RubyNumeric
        14: areturn
        end local 3 // java.math.BigInteger bound
        15: .line 116
      StackMap locals:
      StackMap stack:
            aload 2 /* n */
            instanceof org.jruby.RubyRange
            ifeq 37
        16: .line 117
            aload 2 /* n */
            checkcast org.jruby.RubyRange
            aload 0 /* context */
            invokevirtual org.jruby.RubyRange.begin:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 3 /* beg */
        start local 3 // org.jruby.runtime.builtin.IRubyObject beg
        17: .line 118
            aload 2 /* n */
            checkcast org.jruby.RubyRange
            aload 0 /* context */
            invokevirtual org.jruby.RubyRange.end:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 4 /* end */
        start local 4 // org.jruby.runtime.builtin.IRubyObject end
        18: .line 119
            aload 2 /* n */
            checkcast org.jruby.RubyRange
            invokevirtual org.jruby.RubyRange.isExcludeEnd:()Z
            istore 5 /* exclude */
        start local 5 // boolean exclude
        19: .line 121
            aload 3 /* beg */
            instanceof org.jruby.RubyFixnum
            ifeq 25
            aload 4 /* end */
            instanceof org.jruby.RubyFixnum
            ifeq 25
        20: .line 122
            aload 3 /* beg */
            checkcast org.jruby.RubyFixnum
            invokevirtual org.jruby.RubyFixnum.getLongValue:()J
            lstore 6 /* lower */
        start local 6 // long lower
        21: .line 123
            aload 4 /* end */
            checkcast org.jruby.RubyFixnum
            invokevirtual org.jruby.RubyFixnum.getLongValue:()J
            lstore 8 /* upper */
        start local 8 // long upper
        22: .line 124
            lload 6 /* lower */
            lload 8 /* upper */
            lcmp
            ifle 23
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            areturn
        23: .line 125
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int long long
      StackMap stack:
            iload 5 /* exclude */
            ifeq 24
            lload 8 /* upper */
            lconst_1
            lsub
            lstore 8 /* upper */
        24: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            lload 6 /* lower */
            lload 8 /* upper */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomFixnum:(Lorg/jruby/runtime/ThreadContext;JJ)Lorg/jruby/RubyFixnum;
            areturn
        end local 8 // long upper
        end local 6 // long lower
        25: .line 128
      StackMap locals:
      StackMap stack:
            aload 3 /* beg */
            instanceof org.jruby.RubyInteger
            ifeq 31
            aload 4 /* end */
            instanceof org.jruby.RubyInteger
            ifeq 31
        26: .line 129
            aload 3 /* beg */
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getBigIntegerValue:()Ljava/math/BigInteger;
            astore 6 /* lower */
        start local 6 // java.math.BigInteger lower
        27: .line 130
            aload 4 /* end */
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getBigIntegerValue:()Ljava/math/BigInteger;
            astore 7 /* upper */
        start local 7 // java.math.BigInteger upper
        28: .line 131
            aload 6 /* lower */
            aload 7 /* upper */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifle 29
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            areturn
        29: .line 132
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
            iload 5 /* exclude */
            ifne 30
            aload 7 /* upper */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 7 /* upper */
        30: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 6 /* lower */
            aload 7 /* upper */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomBignum:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/Number;Ljava/math/BigInteger;)Lorg/jruby/RubyBignum;
            areturn
        end local 7 // java.math.BigInteger upper
        end local 6 // java.math.BigInteger lower
        31: .line 135
      StackMap locals:
      StackMap stack:
            aload 3 /* beg */
            instanceof org.jruby.RubyFloat
            ifeq 37
            aload 4 /* end */
            instanceof org.jruby.RubyFloat
            ifeq 37
        32: .line 136
            aload 3 /* beg */
            checkcast org.jruby.RubyFloat
            invokevirtual org.jruby.RubyFloat.getDoubleValue:()D
            dstore 6 /* lower */
        start local 6 // double lower
        33: .line 137
            aload 4 /* end */
            checkcast org.jruby.RubyFloat
            invokevirtual org.jruby.RubyFloat.getDoubleValue:()D
            dstore 8 /* upper */
        start local 8 // double upper
        34: .line 138
            dload 6 /* lower */
            dload 8 /* upper */
            dcmpl
            ifle 35
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
            areturn
        35: .line 139
      StackMap locals: double double
      StackMap stack:
            iload 5 /* exclude */
            ifeq 36
            dload 8 /* upper */
            ldc 4.9E-324
            dsub
            dstore 8 /* upper */
        36: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            dload 6 /* lower */
            dload 8 /* upper */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.randomDouble:(Lorg/jruby/runtime/ThreadContext;DD)Lorg/jruby/RubyFloat;
            areturn
        end local 8 // double upper
        end local 6 // double lower
        end local 5 // boolean exclude
        end local 4 // org.jruby.runtime.builtin.IRubyObject end
        end local 3 // org.jruby.runtime.builtin.IRubyObject beg
        37: .line 144
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "invalid argument - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* n */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.anyToString:()Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 2 // org.jruby.runtime.builtin.IRubyObject n
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   38     0  context  Lorg/jruby/runtime/ThreadContext;
            0   38     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   38     2        n  Lorg/jruby/runtime/builtin/IRubyObject;
            2    5     3    bound  J
            7   10     3    bound  D
           12   15     3    bound  Ljava/math/BigInteger;
           17   37     3      beg  Lorg/jruby/runtime/builtin/IRubyObject;
           18   37     4      end  Lorg/jruby/runtime/builtin/IRubyObject;
           19   37     5  exclude  Z
           21   25     6    lower  J
           22   25     8    upper  J
           27   31     6    lower  Ljava/math/BigInteger;
           28   31     7    upper  Ljava/math/BigInteger;
           33   37     6    lower  D
           34   37     8    upper  D
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true, name = {"random_number", "rand"})
    MethodParameters:
         Name  Flags
      context  
      self     
      n        

  private static org.jruby.RubyFixnum randomFixnum(org.jruby.runtime.ThreadContext, long, long);
    descriptor: (Lorg/jruby/runtime/ThreadContext;JJ)Lorg/jruby/RubyFixnum;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // long lower
        start local 3 // long upper
         0: .line 148
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.getSecureRandom:(Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextDouble:()D
            dstore 5 /* rnd */
        start local 5 // double rnd
         1: .line 149
            dload 5 /* rnd */
            lload 3 /* upper */
            l2d
            dmul
            dconst_1
            dload 5 /* rnd */
            dsub
            lload 1 /* lower */
            l2d
            dmul
            dadd
            dload 5 /* rnd */
            dadd
            dstore 5 /* rnd */
         2: .line 150
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            dload 5 /* rnd */
            invokestatic java.lang.Math.floor:(D)D
            d2l
            invokevirtual org.jruby.Ruby.newFixnum:(J)Lorg/jruby/RubyFixnum;
            areturn
        end local 5 // double rnd
        end local 3 // long upper
        end local 1 // long lower
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lorg/jruby/runtime/ThreadContext;
            0    3     1    lower  J
            0    3     3    upper  J
            1    3     5      rnd  D
    MethodParameters:
         Name  Flags
      context  final
      lower    final
      upper    final

  private static org.jruby.RubyBignum randomBignum(org.jruby.runtime.ThreadContext, java.lang.Number, java.math.BigInteger);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/lang/Number;Ljava/math/BigInteger;)Lorg/jruby/RubyBignum;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // java.lang.Number lower
        start local 2 // java.math.BigInteger upperExc
         0: .line 155
            aload 1 /* lower */
            instanceof java.math.BigInteger
            ifeq 1
            aload 1 /* lower */
            checkcast java.math.BigInteger
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* lower */
            invokevirtual java.lang.Number.longValue:()J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         2: astore 3 /* lowerBig */
        start local 3 // java.math.BigInteger lowerBig
         3: .line 156
            aload 2 /* upperExc */
            aload 3 /* lowerBig */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* bound */
        start local 4 // java.math.BigInteger bound
         4: .line 157
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.getSecureRandom:(Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
            aload 4 /* bound */
            aload 4 /* bound */
            invokevirtual java.math.BigInteger.bitLength:()I
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBigInteger:(Ljava/security/SecureRandom;Ljava/math/BigInteger;I)Ljava/math/BigInteger;
            astore 5 /* rnd */
        start local 5 // java.math.BigInteger rnd
         5: .line 158
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 5 /* rnd */
            aload 3 /* lowerBig */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokestatic org.jruby.RubyBignum.newBignum:(Lorg/jruby/Ruby;Ljava/math/BigInteger;)Lorg/jruby/RubyBignum;
            areturn
        end local 5 // java.math.BigInteger rnd
        end local 4 // java.math.BigInteger bound
        end local 3 // java.math.BigInteger lowerBig
        end local 2 // java.math.BigInteger upperExc
        end local 1 // java.lang.Number lower
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0   context  Lorg/jruby/runtime/ThreadContext;
            0    6     1     lower  Ljava/lang/Number;
            0    6     2  upperExc  Ljava/math/BigInteger;
            3    6     3  lowerBig  Ljava/math/BigInteger;
            4    6     4     bound  Ljava/math/BigInteger;
            5    6     5       rnd  Ljava/math/BigInteger;
    MethodParameters:
          Name  Flags
      context   final
      lower     final
      upperExc  final

  private static java.math.BigInteger nextBigInteger(java.security.SecureRandom, java.math.BigInteger, int);
    descriptor: (Ljava/security/SecureRandom;Ljava/math/BigInteger;I)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.security.SecureRandom random
        start local 1 // java.math.BigInteger bound
        start local 2 // int bits
         0: .line 165
            new java.math.BigInteger
            dup
            iload 2 /* bits */
            bipush 96
            iadd
            aload 0 /* random */
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            astore 3 /* val */
        start local 3 // java.math.BigInteger val
         1: .line 166
            aload 3 /* val */
            aload 1 /* bound */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* rnd */
        start local 4 // java.math.BigInteger rnd
         2: .line 168
            aload 3 /* val */
            aload 1 /* bound */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 4 /* rnd */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 2 /* bits */
            bipush 96
            iadd
            if_icmplt 4
         3: .line 169
            aload 0 /* random */
            aload 1 /* bound */
            iload 2 /* bits */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.nextBigInteger:(Ljava/security/SecureRandom;Ljava/math/BigInteger;I)Ljava/math/BigInteger;
            areturn
         4: .line 171
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 4 /* rnd */
            areturn
        end local 4 // java.math.BigInteger rnd
        end local 3 // java.math.BigInteger val
        end local 2 // int bits
        end local 1 // java.math.BigInteger bound
        end local 0 // java.security.SecureRandom random
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  random  Ljava/security/SecureRandom;
            0    5     1   bound  Ljava/math/BigInteger;
            0    5     2    bits  I
            1    5     3     val  Ljava/math/BigInteger;
            2    5     4     rnd  Ljava/math/BigInteger;
    MethodParameters:
        Name  Flags
      random  final
      bound   final
      bits    final

  private static org.jruby.RubyFloat randomDouble(org.jruby.runtime.ThreadContext, double, double);
    descriptor: (Lorg/jruby/runtime/ThreadContext;DD)Lorg/jruby/RubyFloat;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // double lower
        start local 3 // double upper
         0: .line 175
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.getSecureRandom:(Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextDouble:()D
            dstore 5 /* rnd */
        start local 5 // double rnd
         1: .line 176
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            dload 5 /* rnd */
            dload 3 /* upper */
            dmul
            dconst_1
            dload 5 /* rnd */
            dsub
            dload 1 /* lower */
            dmul
            dadd
            invokevirtual org.jruby.Ruby.newFloat:(D)Lorg/jruby/RubyFloat;
            areturn
        end local 5 // double rnd
        end local 3 // double upper
        end local 1 // double lower
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lorg/jruby/runtime/ThreadContext;
            0    2     1    lower  D
            0    2     3    upper  D
            1    2     5      rnd  D
    MethodParameters:
         Name  Flags
      context  final
      lower    final
      upper    final

  private static org.jruby.RubyFloat randomDouble(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyFloat;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.runtime.ThreadContext context
         0: .line 180
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            invokestatic org.jruby.ext.securerandom.RubySecureRandom.getSecureRandom:(Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextDouble:()D
            invokevirtual org.jruby.Ruby.newFloat:(D)Lorg/jruby/RubyFloat;
            areturn
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
    MethodParameters:
         Name  Flags
      context  final

  private static java.security.SecureRandom getSecureRandom(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Ljava/security/SecureRandom;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.runtime.ThreadContext context
         0: .line 184
            aload 0 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.getSecureRandom:()Ljava/security/SecureRandom;
            areturn
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
    MethodParameters:
         Name  Flags
      context  
}
SourceFile: "RubySecureRandom.java"
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyModule(name = {"SecureRandom"})