public class org.jruby.ext.digest.RubyDigest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.ext.digest.RubyDigest
  super_class: java.lang.Object
{
  private static final java.util.Map<java.lang.String, java.security.MessageDigest> CLONEABLE_DIGESTS;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/security/MessageDigest;>;

  private static final java.lang.String PROVIDER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.bouncycastle.jce.provider.BouncyCastleProvider"

  private static java.security.Provider provider;
    descriptor: Ljava/security/Provider;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final byte[] digits;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=0
         0: .line 69
            new java.util.HashMap
            dup
            bipush 8
            fconst_1
            invokespecial java.util.HashMap.<init>:(IF)V
            putstatic org.jruby.ext.digest.RubyDigest.CLONEABLE_DIGESTS:Ljava/util/Map;
         1: .line 72
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
            ldc "MD2"
            aastore
            dup
            iconst_1
            ldc "MD5"
            aastore
            dup
            iconst_2
            ldc "SHA-1"
            aastore
            dup
            iconst_3
            ldc "SHA-256"
            aastore
            dup
            iconst_4
            ldc "SHA-384"
            aastore
            dup
            iconst_5
            ldc "SHA-512"
            aastore
            dup
            astore 3
            arraylength
            istore 2
            iconst_0
            istore 1
            goto 10
      StackMap locals: top int int java.lang.String[]
      StackMap stack:
         2: aload 3
            iload 1
            aaload
            astore 0 /* name */
        start local 0 // java.lang.String name
         3: .line 74
            aload 0 /* name */
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* digest */
        start local 4 // java.security.MessageDigest digest
         4: .line 75
            aload 4 /* digest */
            invokevirtual java.security.MessageDigest.clone:()Ljava/lang/Object;
            pop
         5: .line 76
            getstatic org.jruby.ext.digest.RubyDigest.CLONEABLE_DIGESTS:Ljava/util/Map;
            aload 0 /* name */
            aload 4 /* digest */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.security.MessageDigest digest
         6: .line 77
            goto 9
         7: .line 78
      StackMap locals: java.lang.String int int java.lang.String[]
      StackMap stack: java.lang.Exception
            astore 4 /* e */
        start local 4 // java.lang.Exception e
         8: .line 79
            invokestatic org.jruby.ext.digest.RubyDigest.logger:()Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " not clonable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 4 // java.lang.Exception e
        end local 0 // java.lang.String name
         9: .line 72
      StackMap locals: top int int java.lang.String[]
      StackMap stack:
            iinc 1 1
      StackMap locals:
      StackMap stack:
        10: iload 1
            iload 2
            if_icmplt 2
        11: .line 87
            aconst_null
            putstatic org.jruby.ext.digest.RubyDigest.provider:Ljava/security/Provider;
        12: .line 131
            bipush 36
            newarray 8
            dup
            iconst_0
        13: .line 132
            bipush 48
            bastore
            dup
            iconst_1
            bipush 49
            bastore
            dup
            iconst_2
            bipush 50
            bastore
            dup
            iconst_3
            bipush 51
            bastore
            dup
            iconst_4
            bipush 52
            bastore
            dup
            iconst_5
            bipush 53
            bastore
            dup
            bipush 6
        14: .line 133
            bipush 54
            bastore
            dup
            bipush 7
            bipush 55
            bastore
            dup
            bipush 8
            bipush 56
            bastore
            dup
            bipush 9
            bipush 57
            bastore
            dup
            bipush 10
            bipush 97
            bastore
            dup
            bipush 11
            bipush 98
            bastore
            dup
            bipush 12
        15: .line 134
            bipush 99
            bastore
            dup
            bipush 13
            bipush 100
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 102
            bastore
            dup
            bipush 16
            bipush 103
            bastore
            dup
            bipush 17
            bipush 104
            bastore
            dup
            bipush 18
        16: .line 135
            bipush 105
            bastore
            dup
            bipush 19
            bipush 106
            bastore
            dup
            bipush 20
            bipush 107
            bastore
            dup
            bipush 21
            bipush 108
            bastore
            dup
            bipush 22
            bipush 109
            bastore
            dup
            bipush 23
            bipush 110
            bastore
            dup
            bipush 24
        17: .line 136
            bipush 111
            bastore
            dup
            bipush 25
            bipush 112
            bastore
            dup
            bipush 26
            bipush 113
            bastore
            dup
            bipush 27
            bipush 114
            bastore
            dup
            bipush 28
            bipush 115
            bastore
            dup
            bipush 29
            bipush 116
            bastore
            dup
            bipush 30
        18: .line 137
            bipush 117
            bastore
            dup
            bipush 31
            bipush 118
            bastore
            dup
            bipush 32
            bipush 119
            bastore
            dup
            bipush 33
            bipush 120
            bastore
            dup
            bipush 34
            bipush 121
            bastore
            dup
            bipush 35
            bipush 122
            bastore
        19: .line 131
            putstatic org.jruby.ext.digest.RubyDigest.digits:[B
        20: .line 138
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            3    9     0    name  Ljava/lang/String;
            4    6     4  digest  Ljava/security/MessageDigest;
            8    9     4       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.Exception

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

  private static org.jruby.util.log.Logger logger();
    descriptor: ()Lorg/jruby/util/log/Logger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 84
            ldc Lorg/jruby/ext/digest/RubyDigest;
            invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void createDigest(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 91
            ldc "org.bouncycastle.jce.provider.BouncyCastleProvider"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast java.security.Provider
            putstatic org.jruby.ext.digest.RubyDigest.provider:Ljava/security/Provider;
         1: .line 92
            goto 3
         2: .line 93
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
         3: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.defineModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* mDigest */
        start local 1 // org.jruby.RubyModule mDigest
         4: .line 96
            aload 1 /* mDigest */
            ldc Lorg/jruby/ext/digest/RubyDigest;
            invokevirtual org.jruby.RubyModule.defineAnnotatedMethods:(Ljava/lang/Class;)V
         5: .line 97
            aload 1 /* mDigest */
            ldc "Instance"
            invokevirtual org.jruby.RubyModule.defineModuleUnder:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 2 /* mDigestInstance */
        start local 2 // org.jruby.RubyModule mDigestInstance
         6: .line 98
            aload 2 /* mDigestInstance */
            ldc Lorg/jruby/ext/digest/RubyDigest$DigestInstance;
            invokevirtual org.jruby.RubyModule.defineAnnotatedMethods:(Ljava/lang/Class;)V
         7: .line 99
            aload 1 /* mDigest */
            ldc "Class"
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
            getstatic org.jruby.ext.digest.RubyDigest$DigestClass.DIGEST_CLASS_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* cDigestClass */
        start local 3 // org.jruby.RubyClass cDigestClass
         8: .line 100
            aload 3 /* cDigestClass */
            ldc Lorg/jruby/ext/digest/RubyDigest$DigestClass;
            invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
         9: .line 101
            aload 3 /* cDigestClass */
            aload 2 /* mDigestInstance */
            invokevirtual org.jruby.RubyClass.includeModule:(Lorg/jruby/runtime/builtin/IRubyObject;)V
        10: .line 102
            aload 1 /* mDigest */
            ldc "Base"
            aload 3 /* cDigestClass */
            getstatic org.jruby.ext.digest.RubyDigest$DigestBase.DIGEST_BASE_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 4 /* cDigestBase */
        start local 4 // org.jruby.RubyClass cDigestBase
        11: .line 103
            aload 4 /* cDigestBase */
            ldc Lorg/jruby/ext/digest/RubyDigest$DigestBase;
            invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
        12: .line 104
            return
        end local 4 // org.jruby.RubyClass cDigestBase
        end local 3 // org.jruby.RubyClass cDigestClass
        end local 2 // org.jruby.RubyModule mDigestInstance
        end local 1 // org.jruby.RubyModule mDigest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0          runtime  Lorg/jruby/Ruby;
            4   13     1          mDigest  Lorg/jruby/RubyModule;
            6   13     2  mDigestInstance  Lorg/jruby/RubyModule;
            8   13     3     cDigestClass  Lorg/jruby/RubyClass;
           11   13     4      cDigestBase  Lorg/jruby/RubyClass;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    MethodParameters:
         Name  Flags
      runtime  

  private static java.security.MessageDigest createMessageDigest(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/MessageDigest;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 107
            getstatic org.jruby.ext.digest.RubyDigest.CLONEABLE_DIGESTS:Ljava/util/Map;
            aload 0 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.MessageDigest
            astore 1 /* cloneable */
        start local 1 // java.security.MessageDigest cloneable
         1: .line 108
            aload 1 /* cloneable */
            ifnull 5
         2: .line 110
            aload 1 /* cloneable */
            invokevirtual java.security.MessageDigest.clone:()Ljava/lang/Object;
            checkcast java.security.MessageDigest
         3: areturn
         4: .line 112
      StackMap locals: java.lang.String java.security.MessageDigest
      StackMap stack: java.lang.CloneNotSupportedException
            pop
         5: .line 118
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.ext.digest.RubyDigest.provider:Ljava/security/Provider;
            ifnull 9
         6: .line 120
            aload 0 /* name */
            getstatic org.jruby.ext.digest.RubyDigest.provider:Ljava/security/Provider;
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest;
         7: areturn
         8: .line 122
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         9: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            areturn
        end local 1 // java.security.MessageDigest cloneable
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       name  Ljava/lang/String;
            1   10     1  cloneable  Ljava/security/MessageDigest;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.CloneNotSupportedException
           6     7       8  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      name  final

  private static org.jruby.util.ByteList toHex(byte[]);
    descriptor: ([B)Lorg/jruby/util/ByteList;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // byte[] val
         0: .line 141
            new org.jruby.util.ByteList
            dup
            aload 0 /* val */
            arraylength
            iconst_2
            imul
            invokespecial org.jruby.util.ByteList.<init>:(I)V
            astore 1 /* byteList */
        start local 1 // org.jruby.util.ByteList byteList
         1: .line 142
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: aload 0 /* val */
            arraylength
            istore 3 /* j */
        start local 3 // int j
         3: goto 8
         4: .line 143
      StackMap locals: org.jruby.util.ByteList int int
      StackMap stack:
            aload 0 /* val */
            iload 2 /* i */
            baload
            sipush 255
            iand
            istore 4 /* b */
        start local 4 // int b
         5: .line 144
            aload 1 /* byteList */
            getstatic org.jruby.ext.digest.RubyDigest.digits:[B
            iload 4 /* b */
            iconst_4
            ishr
            baload
            invokevirtual org.jruby.util.ByteList.append:(B)Lorg/jruby/util/ByteList;
            pop
         6: .line 145
            aload 1 /* byteList */
            getstatic org.jruby.ext.digest.RubyDigest.digits:[B
            iload 4 /* b */
            bipush 15
            iand
            baload
            invokevirtual org.jruby.util.ByteList.append:(B)Lorg/jruby/util/ByteList;
            pop
        end local 4 // int b
         7: .line 142
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            iload 3 /* j */
            if_icmplt 4
        end local 3 // int j
        end local 2 // int i
         9: .line 147
            aload 1 /* byteList */
            areturn
        end local 1 // org.jruby.util.ByteList byteList
        end local 0 // byte[] val
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0       val  [B
            1   10     1  byteList  Lorg/jruby/util/ByteList;
            2    9     2         i  I
            3    9     3         j  I
            5    7     4         b  I
    MethodParameters:
      Name  Flags
      val   

  private static org.jruby.RubyString toHexString(org.jruby.Ruby, byte[]);
    descriptor: (Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // byte[] val
         0: .line 151
            aload 0 /* runtime */
            new org.jruby.util.ByteList
            dup
            aload 1 /* val */
            invokestatic org.jruby.ext.digest.RubyDigest.toHex:([B)Lorg/jruby/util/ByteList;
            invokestatic org.jruby.util.ByteList.plain:(Ljava/lang/CharSequence;)[B
            getstatic org.jcodings.specific.USASCIIEncoding.INSTANCE:Lorg/jcodings/specific/USASCIIEncoding;
            invokespecial org.jruby.util.ByteList.<init>:([BLorg/jcodings/Encoding;)V
            invokestatic org.jruby.RubyString.newStringNoCopy:(Lorg/jruby/Ruby;Lorg/jruby/util/ByteList;)Lorg/jruby/RubyString;
            areturn
        end local 1 // byte[] val
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1      val  [B
    MethodParameters:
         Name  Flags
      runtime  
      val      

  public static org.jruby.RubyString hexencode(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyString;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.builtin.IRubyObject self
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 156
            aload 0 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            aload 1 /* arg */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyString.getBytes:()[B
            invokestatic org.jruby.ext.digest.RubyDigest.toHexString:(Lorg/jruby/Ruby;[B)Lorg/jruby/RubyString;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // org.jruby.runtime.builtin.IRubyObject self
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     1   arg  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"hexencode"}, required = 1, meta = true)
    MethodParameters:
      Name  Flags
      self  
      arg   

  public static org.jruby.RubyString bubblebabble(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyString;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.runtime.builtin.IRubyObject recv
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 161
            aload 1 /* arg */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyString.getByteList:()Lorg/jruby/util/ByteList;
            astore 2 /* bytes */
        start local 2 // org.jruby.util.ByteList bytes
         1: .line 162
            aload 0 /* recv */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            aload 2 /* bytes */
            invokevirtual org.jruby.util.ByteList.unsafeBytes:()[B
            aload 2 /* bytes */
            invokevirtual org.jruby.util.ByteList.begin:()I
            aload 2 /* bytes */
            invokevirtual org.jruby.util.ByteList.length:()I
            invokestatic org.jruby.ext.digest.BubbleBabble.bubblebabble:([BII)Lorg/jruby/util/ByteList;
            invokestatic org.jruby.RubyString.newString:(Lorg/jruby/Ruby;Lorg/jruby/util/ByteList;)Lorg/jruby/RubyString;
            areturn
        end local 2 // org.jruby.util.ByteList bytes
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // org.jruby.runtime.builtin.IRubyObject recv
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   recv  Lorg/jruby/runtime/builtin/IRubyObject;
            0    2     1    arg  Lorg/jruby/runtime/builtin/IRubyObject;
            1    2     2  bytes  Lorg/jruby/util/ByteList;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"bubblebabble"}, required = 1, meta = true)
    MethodParameters:
      Name  Flags
      recv  
      arg   

  public static void createDigestMD5(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 199
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "digest"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         1: .line 200
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* Digest */
        start local 1 // org.jruby.RubyModule Digest
         2: .line 201
            aload 1 /* Digest */
            ldc "Base"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            astore 2 /* Base */
        start local 2 // org.jruby.RubyClass Base
         3: .line 202
            aload 1 /* Digest */
            ldc "MD5"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* MD5 */
        start local 3 // org.jruby.RubyClass MD5
         4: .line 203
            aload 3 /* MD5 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "MD5"
            bipush 64
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 204
            return
        end local 3 // org.jruby.RubyClass MD5
        end local 2 // org.jruby.RubyClass Base
        end local 1 // org.jruby.RubyModule Digest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  runtime  Lorg/jruby/Ruby;
            2    6     1   Digest  Lorg/jruby/RubyModule;
            3    6     2     Base  Lorg/jruby/RubyClass;
            4    6     3      MD5  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  

  public static void createDigestRMD160(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 207
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "digest"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         1: .line 208
            getstatic org.jruby.ext.digest.RubyDigest.provider:Ljava/security/Provider;
            ifnonnull 3
         2: .line 209
            aload 0 /* runtime */
            ldc "RMD160 not supported without BouncyCastle"
            invokevirtual org.jruby.Ruby.newLoadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
         3: .line 211
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* Digest */
        start local 1 // org.jruby.RubyModule Digest
         4: .line 212
            aload 1 /* Digest */
            ldc "Base"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            astore 2 /* Base */
        start local 2 // org.jruby.RubyClass Base
         5: .line 213
            aload 1 /* Digest */
            ldc "RMD160"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* RMD160 */
        start local 3 // org.jruby.RubyClass RMD160
         6: .line 214
            aload 3 /* RMD160 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "RIPEMD160"
            bipush 64
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
         7: .line 215
            return
        end local 3 // org.jruby.RubyClass RMD160
        end local 2 // org.jruby.RubyClass Base
        end local 1 // org.jruby.RubyModule Digest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0  runtime  Lorg/jruby/Ruby;
            4    8     1   Digest  Lorg/jruby/RubyModule;
            5    8     2     Base  Lorg/jruby/RubyClass;
            6    8     3   RMD160  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  

  public static void createDigestSHA1(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 218
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "digest"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         1: .line 219
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* Digest */
        start local 1 // org.jruby.RubyModule Digest
         2: .line 220
            aload 1 /* Digest */
            ldc "Base"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            astore 2 /* Base */
        start local 2 // org.jruby.RubyClass Base
         3: .line 221
            aload 1 /* Digest */
            ldc "SHA1"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* SHA1 */
        start local 3 // org.jruby.RubyClass SHA1
         4: .line 222
            aload 3 /* SHA1 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "SHA1"
            bipush 64
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 223
            return
        end local 3 // org.jruby.RubyClass SHA1
        end local 2 // org.jruby.RubyClass Base
        end local 1 // org.jruby.RubyModule Digest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  runtime  Lorg/jruby/Ruby;
            2    6     1   Digest  Lorg/jruby/RubyModule;
            3    6     2     Base  Lorg/jruby/RubyClass;
            4    6     3     SHA1  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  

  public static void createDigestSHA2(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 226
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "digest"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         1: .line 228
            ldc "SHA-256"
            invokestatic org.jruby.ext.digest.RubyDigest.createMessageDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            pop
         2: .line 229
            goto 7
         3: .line 230
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* e */
        start local 1 // java.security.NoSuchAlgorithmException e
         4: .line 231
            aload 0 /* runtime */
            ldc "SHA2 not supported"
            invokevirtual org.jruby.Ruby.newLoadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            astore 2 /* ex */
        start local 2 // org.jruby.exceptions.RaiseException ex
         5: .line 232
            aload 2 /* ex */
            aload 1 /* e */
            invokevirtual org.jruby.exceptions.RaiseException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         6: .line 233
            aload 2 /* ex */
            athrow
        end local 2 // org.jruby.exceptions.RaiseException ex
        end local 1 // java.security.NoSuchAlgorithmException e
         7: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* Digest */
        start local 1 // org.jruby.RubyModule Digest
         8: .line 236
            aload 1 /* Digest */
            ldc "Base"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            astore 2 /* Base */
        start local 2 // org.jruby.RubyClass Base
         9: .line 237
            aload 1 /* Digest */
            ldc "SHA256"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* SHA256 */
        start local 3 // org.jruby.RubyClass SHA256
        10: .line 238
            aload 3 /* SHA256 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "SHA-256"
            bipush 64
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
        11: .line 239
            aload 1 /* Digest */
            ldc "SHA384"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 4 /* SHA384 */
        start local 4 // org.jruby.RubyClass SHA384
        12: .line 240
            aload 4 /* SHA384 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "SHA-384"
            sipush 128
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
        13: .line 241
            aload 1 /* Digest */
            ldc "SHA512"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 5 /* SHA512 */
        start local 5 // org.jruby.RubyClass SHA512
        14: .line 242
            aload 5 /* SHA512 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "SHA-512"
            sipush 128
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
        15: .line 243
            return
        end local 5 // org.jruby.RubyClass SHA512
        end local 4 // org.jruby.RubyClass SHA384
        end local 3 // org.jruby.RubyClass SHA256
        end local 2 // org.jruby.RubyClass Base
        end local 1 // org.jruby.RubyModule Digest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0  runtime  Lorg/jruby/Ruby;
            4    7     1        e  Ljava/security/NoSuchAlgorithmException;
            5    7     2       ex  Lorg/jruby/exceptions/RaiseException;
            8   16     1   Digest  Lorg/jruby/RubyModule;
            9   16     2     Base  Lorg/jruby/RubyClass;
           10   16     3   SHA256  Lorg/jruby/RubyClass;
           12   16     4   SHA384  Lorg/jruby/RubyClass;
           14   16     5   SHA512  Lorg/jruby/RubyClass;
      Exception table:
        from    to  target  type
           1     2       3  Class java.security.NoSuchAlgorithmException
    MethodParameters:
         Name  Flags
      runtime  

  public static void createDigestBubbleBabble(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 246
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "digest"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         1: .line 247
            aload 0 /* runtime */
            ldc "Digest"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 1 /* Digest */
        start local 1 // org.jruby.RubyModule Digest
         2: .line 248
            aload 1 /* Digest */
            ldc "Base"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            astore 2 /* Base */
        start local 2 // org.jruby.RubyClass Base
         3: .line 249
            aload 1 /* Digest */
            ldc "BubbleBabble"
            aload 2 /* Base */
            aload 2 /* Base */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 3 /* MD5 */
        start local 3 // org.jruby.RubyClass MD5
         4: .line 250
            aload 3 /* MD5 */
            ldc "metadata"
            new org.jruby.ext.digest.RubyDigest$Metadata
            dup
            ldc "BubbleBabble"
            bipush 64
            invokespecial org.jruby.ext.digest.RubyDigest$Metadata.<init>:(Ljava/lang/String;I)V
            invokevirtual org.jruby.RubyClass.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 251
            return
        end local 3 // org.jruby.RubyClass MD5
        end local 2 // org.jruby.RubyClass Base
        end local 1 // org.jruby.RubyModule Digest
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  runtime  Lorg/jruby/Ruby;
            2    6     1   Digest  Lorg/jruby/RubyModule;
            3    6     2     Base  Lorg/jruby/RubyClass;
            4    6     3      MD5  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  
}
SourceFile: "RubyDigest.java"
NestMembers:
  org.jruby.ext.digest.RubyDigest$DigestBase  org.jruby.ext.digest.RubyDigest$DigestBase$1  org.jruby.ext.digest.RubyDigest$DigestClass  org.jruby.ext.digest.RubyDigest$DigestClass$1  org.jruby.ext.digest.RubyDigest$DigestInstance  org.jruby.ext.digest.RubyDigest$MD5  org.jruby.ext.digest.RubyDigest$Metadata  org.jruby.ext.digest.RubyDigest$RMD160  org.jruby.ext.digest.RubyDigest$SHA1  org.jruby.ext.digest.RubyDigest$SHA256  org.jruby.ext.digest.RubyDigest$SHA384  org.jruby.ext.digest.RubyDigest$SHA512
InnerClasses:
  public DigestBase = org.jruby.ext.digest.RubyDigest$DigestBase of org.jruby.ext.digest.RubyDigest
  public DigestClass = org.jruby.ext.digest.RubyDigest$DigestClass of org.jruby.ext.digest.RubyDigest
  public DigestInstance = org.jruby.ext.digest.RubyDigest$DigestInstance of org.jruby.ext.digest.RubyDigest
  public MD5 = org.jruby.ext.digest.RubyDigest$MD5 of org.jruby.ext.digest.RubyDigest
  private Metadata = org.jruby.ext.digest.RubyDigest$Metadata of org.jruby.ext.digest.RubyDigest
  public RMD160 = org.jruby.ext.digest.RubyDigest$RMD160 of org.jruby.ext.digest.RubyDigest
  public SHA1 = org.jruby.ext.digest.RubyDigest$SHA1 of org.jruby.ext.digest.RubyDigest
  public SHA256 = org.jruby.ext.digest.RubyDigest$SHA256 of org.jruby.ext.digest.RubyDigest
  public SHA384 = org.jruby.ext.digest.RubyDigest$SHA384 of org.jruby.ext.digest.RubyDigest
  public SHA512 = org.jruby.ext.digest.RubyDigest$SHA512 of org.jruby.ext.digest.RubyDigest
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyModule(name = {"Digest"})