sig
  type t
  type error =
      Unable_to_load of Utils.UTF8.t * string
    | Already_defined of Utils.UTF8.t
  exception Exception of ClassLoader.error
  val string_of_error : ClassLoader.error -> string
  val make : ClassPath.t -> ClassLoader.t
  val find_class : ClassLoader.t -> Utils.UTF8.t -> ClassDefinition.t
  val find_package : ClassLoader.t -> Utils.UTF8.t -> PackageDefinition.t
  val find_module : ClassLoader.t -> Utils.UTF8.t -> ModuleDefinition.t
  val add_class : ClassLoader.t -> ClassDefinition.t -> unit
  val add_package : ClassLoader.t -> PackageDefinition.t -> unit
  val add_module : ClassLoader.t -> ModuleDefinition.t -> unit
  val mem_class : ClassLoader.t -> Utils.UTF8.t -> bool
  val mem_package : ClassLoader.t -> Utils.UTF8.t -> bool
  val mem_module : ClassLoader.t -> Utils.UTF8.t -> bool
  val remove_class : ClassLoader.t -> Utils.UTF8.t -> unit
  val remove_package : ClassLoader.t -> Utils.UTF8.t -> unit
  val remove_module : ClassLoader.t -> Utils.UTF8.t -> unit
  val replace_class : ClassLoader.t -> ClassDefinition.t -> unit
  val replace_package : ClassLoader.t -> PackageDefinition.t -> unit
  val replace_module : ClassLoader.t -> ModuleDefinition.t -> unit
end