class org.jruby.runtime.load.LibrarySearcher
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.jruby.runtime.load.LibrarySearcher
  super_class: java.lang.Object
{
  private final org.jruby.runtime.load.LoadService loadService;
    descriptor: Lorg/jruby/runtime/load/LoadService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.jruby.Ruby runtime;
    descriptor: Lorg/jruby/Ruby;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.jruby.runtime.load.LoadService);
    descriptor: (Lorg/jruby/runtime/load/LoadService;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // org.jruby.runtime.load.LoadService loadService
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
            aload 1 /* loadService */
            putfield org.jruby.runtime.load.LibrarySearcher.loadService:Lorg/jruby/runtime/load/LoadService;
         2: .line 47
            aload 0 /* this */
            aload 1 /* loadService */
            getfield org.jruby.runtime.load.LoadService.runtime:Lorg/jruby/Ruby;
            putfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
         3: .line 48
            return
        end local 1 // org.jruby.runtime.load.LoadService loadService
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    4     1  loadService  Lorg/jruby/runtime/load/LoadService;
    MethodParameters:
             Name  Flags
      loadService  

  public org.jruby.runtime.load.LibrarySearcher$FoundLibrary findBySearchState(org.jruby.runtime.load.LoadService$SearchState);
    descriptor: (Lorg/jruby/runtime/load/LoadService$SearchState;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // org.jruby.runtime.load.LoadService$SearchState state
         0: .line 52
            aload 0 /* this */
            aload 1 /* state */
            getfield org.jruby.runtime.load.LoadService$SearchState.searchFile:Ljava/lang/String;
            aload 1 /* state */
            getfield org.jruby.runtime.load.LoadService$SearchState.suffixType:Lorg/jruby/runtime/load/LoadService$SuffixType;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findLibrary:(Ljava/lang/String;Lorg/jruby/runtime/load/LoadService$SuffixType;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            astore 2 /* lib */
        start local 2 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary lib
         1: .line 53
            aload 2 /* lib */
            ifnull 4
         2: .line 54
            aload 1 /* state */
            aload 2 /* lib */
            putfield org.jruby.runtime.load.LoadService$SearchState.library:Lorg/jruby/runtime/load/Library;
         3: .line 55
            aload 1 /* state */
            aload 2 /* lib */
            invokevirtual org.jruby.runtime.load.LibrarySearcher$FoundLibrary.getLoadName:()Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LoadService$SearchState.setLoadName:(Ljava/lang/String;)V
         4: .line 57
      StackMap locals: org.jruby.runtime.load.LibrarySearcher$FoundLibrary
      StackMap stack:
            aload 2 /* lib */
            areturn
        end local 2 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary lib
        end local 1 // org.jruby.runtime.load.LoadService$SearchState state
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    5     1  state  Lorg/jruby/runtime/load/LoadService$SearchState;
            1    5     2    lib  Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    MethodParameters:
       Name  Flags
      state  

  public org.jruby.runtime.load.LibrarySearcher$FoundLibrary findLibrary(java.lang.String, org.jruby.runtime.load.LoadService$SuffixType);
    descriptor: (Ljava/lang/String;Lorg/jruby/runtime/load/LoadService$SuffixType;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // java.lang.String baseName
        start local 2 // org.jruby.runtime.load.LoadService$SuffixType suffixType
         0: .line 61
            aload 2 /* suffixType */
            invokevirtual org.jruby.runtime.load.LoadService$SuffixType.getSuffixes:()[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: org.jruby.runtime.load.LibrarySearcher java.lang.String org.jruby.runtime.load.LoadService$SuffixType top int int java.lang.String[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* suffix */
        start local 3 // java.lang.String suffix
         2: .line 62
            aload 0 /* this */
            aload 1 /* baseName */
            aload 3 /* suffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findResourceLibrary:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            astore 7 /* library */
        start local 7 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
         3: .line 64
            aload 7 /* library */
            ifnull 5
         4: .line 65
            aload 7 /* library */
            areturn
        end local 7 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
        end local 3 // java.lang.String suffix
         5: .line 61
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 1
         7: .line 69
            aload 0 /* this */
            aload 1 /* baseName */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findServiceLibrary:(Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
        end local 2 // org.jruby.runtime.load.LoadService$SuffixType suffixType
        end local 1 // java.lang.String baseName
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    8     1    baseName  Ljava/lang/String;
            0    8     2  suffixType  Lorg/jruby/runtime/load/LoadService$SuffixType;
            2    5     3      suffix  Ljava/lang/String;
            3    5     7     library  Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    MethodParameters:
            Name  Flags
      baseName    
      suffixType  

  private org.jruby.runtime.load.LibrarySearcher$FoundLibrary findServiceLibrary(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // java.lang.String name
         0: .line 73
            getstatic org.jruby.runtime.load.DebugLog.JarExtension:Lorg/jruby/runtime/load/DebugLog;
            aload 1 /* name */
            invokevirtual org.jruby.runtime.load.DebugLog.logTry:(Ljava/lang/String;)V
         1: .line 74
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            aload 1 /* name */
            invokestatic org.jruby.runtime.load.ClassExtensionLibrary.tryFind:(Lorg/jruby/Ruby;Ljava/lang/String;)Lorg/jruby/runtime/load/ClassExtensionLibrary;
            astore 2 /* extensionLibrary */
        start local 2 // org.jruby.runtime.load.Library extensionLibrary
         2: .line 75
            aload 2 /* extensionLibrary */
            ifnull 5
         3: .line 76
            getstatic org.jruby.runtime.load.DebugLog.JarExtension:Lorg/jruby/runtime/load/DebugLog;
            aload 1 /* name */
            invokevirtual org.jruby.runtime.load.DebugLog.logFound:(Ljava/lang/String;)V
         4: .line 77
            new org.jruby.runtime.load.LibrarySearcher$FoundLibrary
            dup
            aload 2 /* extensionLibrary */
            aload 1 /* name */
            invokespecial org.jruby.runtime.load.LibrarySearcher$FoundLibrary.<init>:(Lorg/jruby/runtime/load/Library;Ljava/lang/String;)V
            areturn
         5: .line 79
      StackMap locals: org.jruby.runtime.load.Library
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.jruby.runtime.load.Library extensionLibrary
        end local 1 // java.lang.String name
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    6     1              name  Ljava/lang/String;
            2    6     2  extensionLibrary  Lorg/jruby/runtime/load/Library;
    MethodParameters:
      Name  Flags
      name  

  private org.jruby.runtime.load.LibrarySearcher$FoundLibrary findResourceLibrary(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // java.lang.String baseName
        start local 2 // java.lang.String suffix
         0: .line 84
            aload 1 /* baseName */
            ldc "./"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 85
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResource:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
         2: .line 88
      StackMap locals:
      StackMap stack:
            aload 1 /* baseName */
            ldc "../"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 90
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResource:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
         4: .line 93
      StackMap locals:
      StackMap stack:
            aload 1 /* baseName */
            ldc "~/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 12
         5: .line 94
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
            ldc "ENV"
            invokevirtual org.jruby.RubyClass.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.RubyHash
            astore 3 /* env */
        start local 3 // org.jruby.RubyHash env
         6: .line 95
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            ldc "HOME"
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 4 /* env_home */
        start local 4 // org.jruby.RubyString env_home
         7: .line 96
            aload 3 /* env */
            aload 4 /* env_home */
            invokevirtual org.jruby.RubyHash.has_key_p:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyBoolean;
            invokevirtual org.jruby.RubyBoolean.isFalse:()Z
            ifeq 9
         8: .line 97
            aconst_null
            areturn
         9: .line 99
      StackMap locals: org.jruby.RubyHash org.jruby.RubyString
      StackMap stack:
            aload 3 /* env */
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 4 /* env_home */
            invokevirtual org.jruby.RubyHash.op_aref:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 5 /* home */
        start local 5 // java.lang.String home
        10: .line 100
            new java.lang.StringBuilder
            dup
            aload 5 /* home */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* baseName */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* path */
        start local 6 // java.lang.String path
        11: .line 102
            aload 0 /* this */
            aload 6 /* path */
            aload 2 /* suffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResource:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
        end local 6 // java.lang.String path
        end local 5 // java.lang.String home
        end local 4 // org.jruby.RubyString env_home
        end local 3 // org.jruby.RubyHash env
        12: .line 106
      StackMap locals:
      StackMap stack:
            aload 1 /* baseName */
            invokestatic org.jruby.runtime.load.LibrarySearcher.isAbsolute:(Ljava/lang/String;)Z
            ifeq 14
        13: .line 107
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResource:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
        14: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.loadService:Lorg/jruby/runtime/load/LoadService;
            getfield org.jruby.runtime.load.LoadService.loadPath:Lorg/jruby/RubyArray;
            invokevirtual org.jruby.RubyArray.toJavaArray:()[Lorg/jruby/runtime/builtin/IRubyObject;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 20
      StackMap locals: org.jruby.runtime.load.LibrarySearcher java.lang.String java.lang.String top int int org.jruby.runtime.builtin.IRubyObject[]
      StackMap stack:
        15: aload 6
            iload 4
            aaload
            astore 3 /* loadPathEntry */
        start local 3 // org.jruby.runtime.builtin.IRubyObject loadPathEntry
        16: .line 113
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            aload 0 /* this */
            aload 3 /* loadPathEntry */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.getPath:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResourceWithLoadPath:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            astore 7 /* library */
        start local 7 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
        17: .line 114
            aload 7 /* library */
            ifnull 19
            aload 7 /* library */
        18: areturn
        end local 7 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
        end local 3 // org.jruby.runtime.builtin.IRubyObject loadPathEntry
        19: .line 112
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        20: iload 4
            iload 5
            if_icmplt 15
        21: .line 116
            goto 24
      StackMap locals: org.jruby.runtime.load.LibrarySearcher java.lang.String java.lang.String
      StackMap stack: java.lang.Throwable
        22: astore 3 /* t */
        start local 3 // java.lang.Throwable t
        23: .line 117
            aload 3 /* t */
            invokevirtual java.lang.Throwable.printStackTrace:()V
        end local 3 // java.lang.Throwable t
        24: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            getstatic org.jruby.util.URLResource.URI_CLASSLOADER:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 27
        25: .line 124
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            ldc "."
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResourceWithLoadPath:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            astore 3 /* library */
        start local 3 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
        26: .line 128
            aload 3 /* library */
            ifnull 27
            aconst_null
            areturn
        end local 3 // org.jruby.runtime.load.LibrarySearcher$FoundLibrary library
        27: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseName */
            aload 2 /* suffix */
            getstatic org.jruby.util.URLResource.URI_CLASSLOADER:Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResourceWithLoadPath:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
        end local 2 // java.lang.String suffix
        end local 1 // java.lang.String baseName
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   28     0           this  Lorg/jruby/runtime/load/LibrarySearcher;
            0   28     1       baseName  Ljava/lang/String;
            0   28     2         suffix  Ljava/lang/String;
            6   12     3            env  Lorg/jruby/RubyHash;
            7   12     4       env_home  Lorg/jruby/RubyString;
           10   12     5           home  Ljava/lang/String;
           11   12     6           path  Ljava/lang/String;
           16   19     3  loadPathEntry  Lorg/jruby/runtime/builtin/IRubyObject;
           17   19     7        library  Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
           23   24     3              t  Ljava/lang/Throwable;
           26   27     3        library  Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
      Exception table:
        from    to  target  type
          14    18      22  Class java.lang.Throwable
          19    21      22  Class java.lang.Throwable
    MethodParameters:
          Name  Flags
      baseName  
      suffix    

  private java.lang.String getPath(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // org.jruby.runtime.builtin.IRubyObject loadPathEntry
         0: .line 140
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 1 /* loadPathEntry */
            invokestatic org.jruby.RubyFile.get_path:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyString.asJavaString:()Ljava/lang/String;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject loadPathEntry
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    1     1  loadPathEntry  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
               Name  Flags
      loadPathEntry  

  private org.jruby.runtime.load.LibrarySearcher$FoundLibrary findFileResource(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // java.lang.String searchName
        start local 2 // java.lang.String suffix
         0: .line 144
            aload 0 /* this */
            aload 1 /* searchName */
            aload 2 /* suffix */
            aconst_null
            invokevirtual org.jruby.runtime.load.LibrarySearcher.findFileResourceWithLoadPath:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
            areturn
        end local 2 // java.lang.String suffix
        end local 1 // java.lang.String searchName
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    1     1  searchName  Ljava/lang/String;
            0    1     2      suffix  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      searchName  
      suffix      

  private org.jruby.runtime.load.LibrarySearcher$FoundLibrary findFileResourceWithLoadPath(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/load/LibrarySearcher$FoundLibrary;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=4
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // java.lang.String searchName
        start local 2 // java.lang.String suffix
        start local 3 // java.lang.String loadPath
         0: .line 148
            aload 3 /* loadPath */
            ifnull 1
            new java.lang.StringBuilder
            dup
            aload 3 /* loadPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* searchName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* searchName */
      StackMap locals:
      StackMap stack: java.lang.String
         2: astore 4 /* fullPath */
        start local 4 // java.lang.String fullPath
         3: .line 149
            new java.lang.StringBuilder
            dup
            aload 4 /* fullPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* suffix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* pathWithSuffix */
        start local 5 // java.lang.String pathWithSuffix
         4: .line 151
            getstatic org.jruby.runtime.load.DebugLog.Resource:Lorg/jruby/runtime/load/DebugLog;
            aload 5 /* pathWithSuffix */
            invokevirtual org.jruby.runtime.load.DebugLog.logTry:(Ljava/lang/String;)V
         5: .line 152
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            aload 5 /* pathWithSuffix */
            invokestatic org.jruby.util.JRubyFile.createResourceAsFile:(Lorg/jruby/Ruby;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 6 /* resource */
        start local 6 // org.jruby.util.FileResource resource
         6: .line 153
            aload 6 /* resource */
            invokeinterface org.jruby.util.FileResource.exists:()Z
            ifeq 18
         7: .line 154
            aload 6 /* resource */
            invokeinterface org.jruby.util.FileResource.absolutePath:()Ljava/lang/String;
            aload 6 /* resource */
            invokeinterface org.jruby.util.FileResource.canonicalPath:()Ljava/lang/String;
            if_acmpeq 14
         8: .line 155
            aload 0 /* this */
            getfield org.jruby.runtime.load.LibrarySearcher.runtime:Lorg/jruby/Ruby;
            aload 6 /* resource */
            invokeinterface org.jruby.util.FileResource.canonicalPath:()Ljava/lang/String;
            invokestatic org.jruby.util.JRubyFile.createResourceAsFile:(Lorg/jruby/Ruby;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 7 /* expandedResource */
        start local 7 // org.jruby.util.FileResource expandedResource
         9: .line 156
            aload 7 /* expandedResource */
            invokeinterface org.jruby.util.FileResource.exists:()Z
            ifeq 14
        10: .line 157
            aload 0 /* this */
            aload 7 /* expandedResource */
            aload 7 /* expandedResource */
            invokeinterface org.jruby.util.FileResource.canonicalPath:()Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.resolveScriptName:(Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* scriptName */
        start local 8 // java.lang.String scriptName
        11: .line 158
            aload 0 /* this */
            aload 7 /* expandedResource */
            new java.lang.StringBuilder
            dup
            aload 1 /* searchName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* suffix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.resolveLoadName:(Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* loadName */
        start local 9 // java.lang.String loadName
        12: .line 159
            getstatic org.jruby.runtime.load.DebugLog.Resource:Lorg/jruby/runtime/load/DebugLog;
            aload 5 /* pathWithSuffix */
            invokevirtual org.jruby.runtime.load.DebugLog.logFound:(Ljava/lang/String;)V
        13: .line 160
            new org.jruby.runtime.load.LibrarySearcher$FoundLibrary
            dup
            aload 1 /* searchName */
            aload 8 /* scriptName */
            aload 6 /* resource */
            invokestatic org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.create:(Ljava/lang/String;Ljava/lang/String;Lorg/jruby/util/FileResource;)Lorg/jruby/runtime/load/LibrarySearcher$ResourceLibrary;
            aload 9 /* loadName */
            invokespecial org.jruby.runtime.load.LibrarySearcher$FoundLibrary.<init>:(Lorg/jruby/runtime/load/Library;Ljava/lang/String;)V
            areturn
        end local 9 // java.lang.String loadName
        end local 8 // java.lang.String scriptName
        end local 7 // org.jruby.util.FileResource expandedResource
        14: .line 163
      StackMap locals: java.lang.String java.lang.String org.jruby.util.FileResource
      StackMap stack:
            getstatic org.jruby.runtime.load.DebugLog.Resource:Lorg/jruby/runtime/load/DebugLog;
            aload 5 /* pathWithSuffix */
            invokevirtual org.jruby.runtime.load.DebugLog.logFound:(Ljava/lang/String;)V
        15: .line 164
            aload 0 /* this */
            aload 6 /* resource */
            aload 5 /* pathWithSuffix */
            invokevirtual org.jruby.runtime.load.LibrarySearcher.resolveScriptName:(Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* scriptName */
        start local 7 // java.lang.String scriptName
        16: .line 165
            aload 0 /* this */
            aload 6 /* resource */
            new java.lang.StringBuilder
            dup
            aload 1 /* searchName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* suffix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.runtime.load.LibrarySearcher.resolveLoadName:(Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* loadName */
        start local 8 // java.lang.String loadName
        17: .line 167
            new org.jruby.runtime.load.LibrarySearcher$FoundLibrary
            dup
            aload 1 /* searchName */
            aload 7 /* scriptName */
            aload 6 /* resource */
            invokestatic org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.create:(Ljava/lang/String;Ljava/lang/String;Lorg/jruby/util/FileResource;)Lorg/jruby/runtime/load/LibrarySearcher$ResourceLibrary;
            aload 8 /* loadName */
            invokespecial org.jruby.runtime.load.LibrarySearcher$FoundLibrary.<init>:(Lorg/jruby/runtime/load/Library;Ljava/lang/String;)V
            areturn
        end local 8 // java.lang.String loadName
        end local 7 // java.lang.String scriptName
        18: .line 170
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 6 // org.jruby.util.FileResource resource
        end local 5 // java.lang.String pathWithSuffix
        end local 4 // java.lang.String fullPath
        end local 3 // java.lang.String loadPath
        end local 2 // java.lang.String suffix
        end local 1 // java.lang.String searchName
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lorg/jruby/runtime/load/LibrarySearcher;
            0   19     1        searchName  Ljava/lang/String;
            0   19     2            suffix  Ljava/lang/String;
            0   19     3          loadPath  Ljava/lang/String;
            3   19     4          fullPath  Ljava/lang/String;
            4   19     5    pathWithSuffix  Ljava/lang/String;
            6   19     6          resource  Lorg/jruby/util/FileResource;
            9   14     7  expandedResource  Lorg/jruby/util/FileResource;
           11   14     8        scriptName  Ljava/lang/String;
           12   14     9          loadName  Ljava/lang/String;
           16   18     7        scriptName  Ljava/lang/String;
           17   18     8          loadName  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      searchName  
      suffix      
      loadPath    

  private static boolean isAbsolute(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String path
         0: .line 175
            aload 0 /* path */
            ldc "jar:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 176
            aload 0 /* path */
            iconst_4
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 0 /* path */
         2: .line 179
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            ldc "file:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 184
            iconst_1
            ireturn
         4: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            ldc "uri:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 6
         5: .line 188
            iconst_1
            ireturn
         6: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            ldc "classpath:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 192
            iconst_1
            ireturn
         8: .line 194
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* path */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.isAbsolute:()Z
            ireturn
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  protected java.lang.String resolveLoadName(org.jruby.util.FileResource, java.lang.String);
    descriptor: (Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // org.jruby.util.FileResource resource
        start local 2 // java.lang.String ruby18path
         0: .line 198
            aload 1 /* resource */
            invokeinterface org.jruby.util.FileResource.absolutePath:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.String ruby18path
        end local 1 // org.jruby.util.FileResource resource
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    1     1    resource  Lorg/jruby/util/FileResource;
            0    1     2  ruby18path  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      resource    
      ruby18path  

  protected java.lang.String resolveScriptName(org.jruby.util.FileResource, java.lang.String);
    descriptor: (Lorg/jruby/util/FileResource;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.jruby.runtime.load.LibrarySearcher this
        start local 1 // org.jruby.util.FileResource resource
        start local 2 // java.lang.String ruby18Path
         0: .line 202
            aload 1 /* resource */
            invokeinterface org.jruby.util.FileResource.absolutePath:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.String ruby18Path
        end local 1 // org.jruby.util.FileResource resource
        end local 0 // org.jruby.runtime.load.LibrarySearcher this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/jruby/runtime/load/LibrarySearcher;
            0    1     1    resource  Lorg/jruby/util/FileResource;
            0    1     2  ruby18Path  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      resource    
      ruby18Path  
}
SourceFile: "LibrarySearcher.java"
NestMembers:
  org.jruby.runtime.load.LibrarySearcher$ClassResourceLibrary  org.jruby.runtime.load.LibrarySearcher$FoundLibrary  org.jruby.runtime.load.LibrarySearcher$JarResourceLibrary  org.jruby.runtime.load.LibrarySearcher$ResourceLibrary
InnerClasses:
  ClassResourceLibrary = org.jruby.runtime.load.LibrarySearcher$ClassResourceLibrary of org.jruby.runtime.load.LibrarySearcher
  FoundLibrary = org.jruby.runtime.load.LibrarySearcher$FoundLibrary of org.jruby.runtime.load.LibrarySearcher
  JarResourceLibrary = org.jruby.runtime.load.LibrarySearcher$JarResourceLibrary of org.jruby.runtime.load.LibrarySearcher
  ResourceLibrary = org.jruby.runtime.load.LibrarySearcher$ResourceLibrary of org.jruby.runtime.load.LibrarySearcher
  public SearchState = org.jruby.runtime.load.LoadService$SearchState of org.jruby.runtime.load.LoadService
  public final SuffixType = org.jruby.runtime.load.LoadService$SuffixType of org.jruby.runtime.load.LoadService