struct     type tool = t     type t = Definition.t -> tool option     let concat : t list -> t =       fun l ->       fun def ->         List.find_map l ~f:(fun kit -> kit def)     let of_list l : t =       fun def ->         List.find l ~f:(fun {definition; _} -> definition = def)     let get_exn t tool =       match t tool with       | Some s -> s       | None ->         failwithf "Toolkit cannot provide the tool %s"           (Definition.to_string tool)   end