anchor.diff:      | true, value -> Some value
       | _ -> None
   
  -let createProject checker projectOptions (com: ICompiler) (msg: Parser.Message) projFile =
  +let createProject checker (projInfo: ProjectInfo option)
  +                  (com: ICompiler) (msg: Parser.Message) projFile =
       let projectOptions =
  -        match projectOptions with
  +        projInfo |> Option.bind (fun i -> i.ProjectOptions) |> function
           | Some projectOptions -> projectOptions
           | None ->
               let projectOptions = getFullProjectOpts checker msg.define projFile
  
positive.code: type FileInfo =
      { mutable IsCompiled: bool }
  
  type Project(projectOptions: FSharpProjectOptions, checkedProject: FSharpCheckProjectResults, ?fableCoreJsDir) =
      let entities = ConcurrentDictionary<string, Fable.Entity>()
      let inlineExprs = ConcurrentDictionary<string, InlineExpr>()
      let fileInfos =
          projectOptions.ProjectFileNames
          |> Seq.map (fun filepath -> Path.normalizeFullPath filepath, { IsCompiled = false })
          |> Map
      let rootModules =
          checkedProject.AssemblyContents.ImplementationFiles
          |> Seq.map (fun file -> file.FileName, FSharp2Fable.Compiler.getRootModuleFullName file)
          |> Map
      let fableCoreJsDir =
          match fableCoreJsDir with
          | Some dir -> Some dir
          | None ->
          #if FABLE_COMPILER
              Some "fable-core"
          #else
              ProjectCracker.tryGetFableCoreJsDir projectOptions.ProjectFileName
          #endif
      member __.CheckedProject = checkedProject
      member __.ProjectOptions = projectOptions
      member __.ProjectFile = projectOptions.ProjectFileName
  
negative.code:                     Log.logVerbose("   " + file)
              projectOptions
      let checkedProject = parseFSharpProject checker projectOptions com
      tryGetOption "saveAst" msg.extra |> Option.iter (fun dir ->
          Printers.printAst dir checkedProject)
      let isWatch, fableCoreJsDir =
          match projInfo with
          // If we have info from previous project, assume it's a watch compilation
          | Some info -> true, info.FableCoreJsDir
          | None -> false, ProjectCracker.tryGetFableCoreJsDir projectOptions.ProjectFileName
      Project(projectOptions, checkedProject, isWatch, ?fableCoreJsDir=fableCoreJsDir)
  
  let toJson =
      let jsonSettings =
  