anchor.diff:            raise (Err (BU.format1 "Expected an implementation of module %s, but couldn't find one" key))
           | Some f -> f
   
  -let dependences_of (file_system_map:files_for_module_name) (deps:dependence_graph) (fn:file_name) : list<file_name> =
  +let dependences_of (file_system_map:files_for_module_name)
  +                   (deps:dependence_graph)
  +                   (all_cmd_line_files:list<file_name>)
  +                   (fn:file_name)
  +    : list<file_name> =
       match deps_try_find deps fn with
       | None -> empty_dependences
       | Some (deps, _) ->
  -      List.map (file_of_dep file_system_map) deps
  +      List.map (file_of_dep file_system_map all_cmd_line_files) deps
   
   let add_dependence (deps:dependence_graph)
                      (from:file_name) (to_:file_name)
  
positive.code:   (* A map from lowercase module names (e.g. [a.b.c]) to the corresponding
     * filenames (e.g. [/where/to/find/A.B.C.fst]). Consider this map
     * immutable from there on. *)
    let file_system_map = build_map filenames in
  
    (* Debug. *)
    //  List.iter (fun k -> BU.print_string (file_names_of_key k)) (smap_keys m);
  
    (* discover: Do a graph traversal starting from file_name
     *           filling in dep_graph with the dependences *)
  
negative.code: type dependence_graph = //maps file names to the modules it depends on
       | Deps of smap<(dependences * color)>
  type deps =
       | Mk of dependence_graph      //dependences of the entire project, not just those reachable from the command line
             * files_for_module_name //an abstraction of the file system
             * list<file_name>       //all command-line files
  let deps_try_find (Deps m) k = BU.smap_try_find m k
  let deps_add_dep (Deps m) k v = BU.smap_add m k v
  let deps_keys (Deps m) = BU.smap_keys m
  let deps_empty () = Deps (BU.smap_create 41)
  
  let module_name_of_dep = function
      | UseInterface m
      | PreferInterface m
      | UseImplementation m -> m
  
  