module Bootsnap::LoadPathCache

def setup(cache_path:, development_mode:, active_support: true)

def setup(cache_path:, development_mode:, active_support: true)
  store = Store.new(cache_path)
  @loaded_features_index = LoadedFeaturesIndex.new
  @realpath_cache = RealpathCache.new
  @load_path_cache = Cache.new(store, $LOAD_PATH, development_mode: development_mode)
  require_relative 'load_path_cache/core_ext/kernel_require'
  if active_support
    # this should happen after setting up the initial cache because it
    # loads a lot of code. It's better to do after +require+ is optimized.
    require 'active_support/dependencies'
    @autoload_paths_cache = Cache.new(
      store,
      ::ActiveSupport::Dependencies.autoload_paths,
      development_mode: development_mode
    )
    require_relative 'load_path_cache/core_ext/active_support'
  end
end