anchor.diff:      | FriendImplementation f -> "FriendImplementation " ^ f
   type dependences = list<dependence>
   let empty_dependences = []
  +type dep_node = {
  +    edges:dependences;
  +    color:color;
  +    friends:list<module_name>;
  +    interfaces_needing_inlining:list<module_name>
  +}
   type dependence_graph = //maps file names to the modules it depends on
  -     | Deps of smap<(dependences * color)>
  +     | Deps of smap<dep_node> //(dependences * color)>
   type deps = {
       dep_graph:dependence_graph;              //dependences of the entire project, not just those reachable from the command line
       file_system_map:files_for_module_name;   //an abstraction of the file system
  
positive.code:     : list<file_name> =
      match deps_try_find deps fn with
      | None -> empty_dependences
      | Some (deps, _) ->
        List.map (file_of_dep file_system_map all_cmd_line_files) deps
  
  let print_graph (graph:dependence_graph) =
  
negative.code:   let full_cycle_detection all_command_line_files =
      let dep_graph = dep_graph_copy dep_graph in
      let rec aux (cycle:list<file_name>) filename =
          let node =
              match deps_try_find dep_graph filename with
              | Some node -> node
              | None ->
                failwith (BU.format1 "Failed to find dependences of %s" filename)
          in
          let direct_deps = node.edges |> List.collect (fun x ->
              match x with
              | UseInterface f
              | PreferInterface f ->
  