anchor.diff:      | UseInterface f -> "UseInterface " ^ f
       | PreferInterface f -> "PreferInterface " ^ f
       | UseImplementation f -> "UseImplementation " ^ f
  -    | FriendImplementation f -> "UseImplementation " ^ f
  +    | FriendImplementation f -> "FriendImplementation " ^ f
   type dependences = list<dependence>
   let empty_dependences = []
   type dependence_graph = //maps file names to the modules it depends on
  
positive.code:         let (Deps dg') = deps_empty() in
          BU.smap_fold dg (fun filename (dependences, color) () ->
              BU.smap_add dg' filename (widen_deps friends dependences, color)) ();
          all_friend_deps (Deps dg') [] ([], []) root_files
      in
      all_files,
      !widened
  
  
negative.code:         in
          (* Mutate the graph to mark the node as visited *)
          deps_add_dep dep_graph filename (direct_deps, Black);
          if Options.debug_any()
          then BU.print1 "Adding %s" filename;
          (* Also build the topological sort (Tarjan's algorithm). *)
          List.collect
            (function | FriendImplementation m -> [m]
                      | d ->
                        if for_extraction &&
                           Options.cmi() &&
                           List.contains (module_name_of_dep d) interfaces_needing_inlining
                        then [module_name_of_dep d]
                        else [])
            direct_deps
          @all_friends,
          filename :: all_files
      and all_friend_deps dep_graph cycle all_friends filenames =
  