anchor.diff:          let dataTable = Dict<obj, string>()
   
           let storeData (d : obj) =
  -            dataTable.GetOrCreate(d, fun o ->
  -                let hash = objHash o
  -                let binary = bson.Pickle(o)
  +            if d = null then "null"
  +            else
  +                dataTable.GetOrCreate(d, fun o ->
  +                    let hash = objHash o
  +                    let binary = bson.Pickle(o)
                   
   
  -                let target = data ++ hash
  -                if !!target then File.WriteAllBytes(target, binary)
  -
  -                hash
  -            )
  +                    let target = data ++ hash
  +                    if !!target then File.WriteAllBytes(target, binary)
  +
  +                    hash
  +                )
   
           let commits = target ++ "commits"
           ensureExists commits
  
positive.code: 
          git.pushAll repo
  
      let run() =
          build()
          read()
  
  
  
  
negative.code:         let heads : Map<string, Guid> = pickler.UnPickle(File.ReadAllBytes heads)
          
          let loadData (str : string) =
              if str = "null" then Unchecked.defaultof<_>
              else
                  match w.Data.TryGetValue str with
                      | (true, v) -> v
                      | _ ->
                          let path = data ++ str
                          if exists path then
                              let data = path |> File.ReadAllBytes |> bson.UnPickle
                              w.Data.[str] <- data
                              data
                          else
                              failwithf "could not get data for hash: %A" str
  
          let rec loadCommit (id : Guid) =
              match w.Commits.TryGetValue id with
  