class Bootsnap::LoadPathCache::Cache

def find(feature)

loadpath.
Try to resolve this feature to an absolute path without traversing the
def find(feature)
  reinitialize if stale?
  feature = feature.to_s
  return feature if feature.start_with?(SLASH)
  return File.expand_path(feature) if feature.start_with?('./')
  @mutex.synchronize do
    x = search_index(feature)
    return x if x
    # The feature wasn't found on our preliminary search through the index.
    # We resolve this differently depending on what the extension was.
    case File.extname(feature)
    # If the extension was one of the ones we explicitly cache (.rb and the
    # native dynamic extension, e.g. .bundle or .so), we know it was a
    # failure and there's nothing more we can do to find the file.
    when *CACHED_EXTENSIONS # .rb, .bundle or .so
      nil
    # If no extension was specified, it's the same situation, since we
    # try appending both cachable extensions in search_index. However,
    # there's a special-case for 'enumerator'. Before ruby 1.9, you had
    # to `require 'enumerator'` to use it. In 1.9+, it's pre-loaded, but
    # doesn't correspond to any entry on the filesystem. Ruby lies. So we
    # lie too, forcing our monkeypatch to return false like ruby would.
    when ""
      raise LoadPathCache::ReturnFalse if BUILTIN_FEATURES.key?(feature)
      nil
    # Ruby allows specifying native extensions as '.so' even when DLEXT
    # is '.bundle'. This is where we handle that case.
    when DOT_SO
      x = search_index(feature[0..-4] + DLEXT)
      return x if x
      if DLEXT2
        search_index(feature[0..-4] + DLEXT2)
      end
    else
      # other, unknown extension. For example, `.rake`. Since we haven't
      # cached these, we legitimately need to run the load path search.
      raise LoadPathCache::FallbackScan
    end
  end
end