anchor.diff:              match BU.load_value_from_file cache_file with
               | None ->
                 fail "Corrupt"
  -            | Some (digest, tcmod, tcmod_iface_opt, mii) ->
  +            | Some (vnum, digest, tcmod, tcmod_iface_opt, mii) ->
  +              if vnum <> cache_version_number then fail "Stale, because inconsistent cache version"
  +              else
                   match FStar.Parser.Dep.hash_dependences env.dep_graph fn with
                   | Some digest' ->
  -                    if digest=digest'
  -                    then Some (tcmod, tcmod_iface_opt, mii)
  -                    else begin
  -                        if Options.debug_any()
  -                        then begin
  -                                BU.print4 "Expected (%s) hashes:\n%s\n\nGot (%s) hashes:\n\t%s\n"
  -                                        (BU.string_of_int (List.length digest'))
  -                                        (FStar.Parser.Dep.print_digest digest')
  -                                        (BU.string_of_int (List.length digest))
  -                                        (FStar.Parser.Dep.print_digest digest);
  -                            if List.length digest = List.length digest'
  -                            then List.iter2
  -                                    (fun (x,y) (x', y') ->
  -                                            if x<>x' || y<>y'
  -                                            then BU.print2 "Differ at: Expected %s\n Got %s\n"
  -                                                (FStar.Parser.Dep.print_digest [(x,y)])
  -                                                (FStar.Parser.Dep.print_digest [(x',y')]))
  -                                    digest
  -                                    digest'
  -                            end;
  -                        fail "Stale"
  -                    end
  +                  if digest=digest'
  +                  then Some (tcmod, tcmod_iface_opt, mii)
  +                  else begin
  +                    if Options.debug_any()
  +                    then begin
  +                      BU.print4 "Expected (%s) hashes:\n%s\n\nGot (%s) hashes:\n\t%s\n"
  +                                (BU.string_of_int (List.length digest'))
  +                                (FStar.Parser.Dep.print_digest digest')
  +                                (BU.string_of_int (List.length digest))
  +                                (FStar.Parser.Dep.print_digest digest);
  +                      if List.length digest = List.length digest'
  +                      then List.iter2
  +                           (fun (x,y) (x', y') ->
  +                            if x<>x' || y<>y'
  +                            then BU.print2 "Differ at: Expected %s\n Got %s\n"
  +                                           (FStar.Parser.Dep.print_digest [(x,y)])
  +                                           (FStar.Parser.Dep.print_digest [(x',y')]))
  +                           digest
  +                           digest'
  +                    end;
  +                    fail "Stale"
  +                  end
                   | _ ->
  -                fail "Stale"
  +                  fail "Stale"
             else fail "Absent"
   
   let store_module_to_cache env fn (m:modul) (modul_iface_opt:option<modul>) (mii:DsEnv.module_inclusion_info) =
  
positive.code:     let digest = FStar.Parser.Dep.hash_dependences env.dep_graph fn in
      match digest with
      | Some hashes ->
        BU.save_value_to_file cache_file (hashes, m, modul_iface_opt, mii)
      | _ ->
        FStar.Errors.log_issue
          (FStar.Range.mk_range fn (FStar.Range.mk_pos 0 0)
  
negative.code: module TcTerm  = FStar.TypeChecker.TcTerm
  module BU      = FStar.Util
  module Dep     = FStar.Parser.Dep
  
  (* we write this version number to the cache files, and detect when loading the cache that the version number is same *)
  let cache_version_number = 1
  
  let module_or_interface_name m = m.is_interface, m.name
  
  