anchor.diff:   *)
   type checked_file_entry =
     int *                      //cache version number
  -  list<(string * string)> *  //digest of direct dependencies
  -  string *                   //digest of just this file
  +  
  +  list<(string * string)> *  //list of (file_name * digest) of direct dependences
  +                             //file_name is name of the source file and
  +                             //digest is that of the corresponding checked file
  +                             //except when the entries are for the current .fst and .fsti,
  +                             //digest is that of the source file
  +  
  +  string *                   //digest of this source file
  +                             //also present in the list above, but handy to have it here
  +  
     Parser.Dep.parsing_data *  //parsing data for this file
  +  
     tc_result                  //typechecking result, including the smt encoding
   
   (*
  
positive.code:  *  At that point, the cache is updated to either Valid or Invalid w.r.t. the tc data
   *)
  type tc_result_t =
    | Unknown of (list<(string * string)>) * string * tc_result  //deps string, digest of this file, tc_result
    | Invalid of string  //reason why this is invalid
    | Valid   of string * tc_result  //digest, tc_result
  
  (*
   * The cache of checked files
  
negative.code:             try
                let iface_checked_fn = iface |> Dep.cache_file_name in
                match BU.smap_try_find mcache iface_checked_fn with
                | Some (Unknown (_, tc_result), parsing_data) ->
                  BU.smap_add mcache
                    iface_checked_fn
                    (Valid (BU.digest_of_file iface_checked_fn, tc_result), parsing_data)
                | _ -> ()
              with
                | _ -> ()
  