anchor.diff:          else
               checker.StartBackgroundCompile options
               let newLazyUntypedInfo = getLazyUntypedInfo filename
  -            lazyUntypedInfos.[filename] = newLazyUntypedInfo |> ignore
  +            lazyUntypedInfos.[filename] <- newLazyUntypedInfo
               newLazyUntypedInfo.Force()
   
       member self.UntypedInfo filename =
  
positive.code:         let index = getIndex filename
          let filesAndContents = Array.copy filesAndContents
          Array.set filesAndContents index (filename, Some contents)
          new Project(currentFile, filesAndContents, Set.add filename updatedFiles)
      member self.UpdateCurrentFileContents contents =
          self.UpdateContents self.CurrentFile contents
          
  
negative.code:         if typedInfo.contents = project.GetContents filename then typedInfo.typedInfo
          else
              let newLazyTypedInfo = getLazyTypedInfo filename
              lazyTypedInfos.[filename] <- newLazyTypedInfo
              newLazyTypedInfo.Force().typedInfo
              
          
  and Project(currentFile:string, filesAndContents:(string * string option) array, updatedFiles:Set<string>, lazyTypedInfos:Lazy<TypedInfo> option array) as self =
      let currentFile = Path.GetFullPath currentFile
      let getIndex filename = Seq.findIndex ((=) filename) self.Files
      let parseInfoCache = lazy (new ParseInfoCache(self, lazyTypedInfos))
  
      new(currentFile:string, filesAndContents:(string * string option) array) =
          Project(currentFile, filesAndContents, Set.empty, Array.map (fun _ -> None) filesAndContents)
      new(source:string, filename:string) =
          Project(filename, [|filename, Some source|])
          
  