anchor.diff:             is_implementation fn &&
              key = lowercase_module_name fn)
       in
  -    let maybe_add_suffix f = if use_checked_file then cache_file_name f else f in
  +
  +    let maybe_use_cache_of f = if use_checked_file then cache_file_name f else f in
  +
       match d with
       | UseInterface key ->
         //This key always resolves to an interface source file
  
positive.code:     let rec hash_deps out = function
          | [] -> Some (("source", source_hash)::interface_hash@out)
          | fn::deps ->
            let digest =
              match FStar.Options.find_file (FStar.Util.basename (cache_file_name fn)) with
              | None -> None
              | Some fn -> Some (digest_of_file fn)
            in
            match digest with
            | None ->
              if Options.debug_any()
              then BU.print2 "%s: missed digest of file %s\n" cache_file (FStar.Util.basename (cache_file_name fn));
              None
            | Some dig ->
              hash_deps ((lowercase_module_name fn, dig) :: out) deps
  
negative.code:       if cmd_line_has_impl key //unless the cmd line contains 'a.fst'
        && Option.isNone (Options.dep()) //and we're not just doing a dependency scan using `--dep _`
        then if Options.expose_interfaces()
             then maybe_use_cache_of (Option.get (implementation_of file_system_map key))
             else raise_err (Errors.Fatal_MissingExposeInterfacesOption,
                             BU.format3 "You may have a cyclic dependence on module %s: use --dep full to confirm. \
                                         Alternatively, invoking fstar with %s on the command line breaks \
  