anchor.diff:              let projFile = Path.normalizeFullPath projFile
               match Map.tryFind projFile state with
               | Some project -> checkWatchCompilation project sourceFile
  -            | None -> createProject checker false None msg projFile
  +            | None -> createProject checker [||] None msg projFile
                         |> addOrUpdateProject state |> Some
           | false, _ ->
               state |> Map.tryPick (fun _ (project: Project) ->
  
positive.code:             projectOptions, fableCore
      let implFiles, errors =
          match prevProject with
          | Some prevProject when msg.path.EndsWith(".fs") && isOptimizeWatch msg.extra ->
              Log.logAlways(sprintf "Parsing %s..." (getRelativePath msg.path))
              let source = IO.File.ReadAllText(msg.path)
              // About this parameter, see https://github.com/fsharp/FSharp.Compiler.Service/issues/796#issuecomment-333094956
              let version = IO.File.GetLastWriteTime(msg.path).Ticks |> int
              let results, answer =
                  checker.ParseAndCheckFileInProject(msg.path, version, source, projectOptions)
                  |> Async.RunSynchronously
              match answer with
              | FSharpCheckFileAnswer.Aborted -> failwith "Aborted"
              | FSharpCheckFileAnswer.Succeeded res ->
                  match res.ImplementationFiles with
                  | None -> failwith "No Implementation files"
                  | Some implFiles ->
                      (prevProject.ImplementationFiles, implFiles) ||> List.fold (fun implFiles file ->
                          Map.add (Path.normalizePath file.FileName) file implFiles), res.Errors
          | _ ->
              Log.logAlways(sprintf "Parsing %s..." (getRelativePath projectOptions.ProjectFileName))
              let checkedProject =
                  projectOptions
                  |> checker.ParseAndCheckProject
                  |> Async.RunSynchronously
              tryGetOption "saveAst" msg.extra |> Option.iter (fun dir ->
  
negative.code:                 else None)
      match IO.Path.GetExtension(msg.path).ToLower() with
      | ".fsproj" ->
          createProject checker [||] None msg msg.path
          |> addOrUpdateProject state
      | ".fsx" as ext ->
          if Map.containsKey msg.path state then
              // When a script is modified, restart the project with new options
              // (to check for new references, loaded projects, etc.)
              createProject checker [||] None msg msg.path
              |> addOrUpdateProject state
          else
              match tryFindAndUpdateProject state ext msg.path with
              | Some stateAndProject -> stateAndProject
              | None ->
                  createProject checker [||] None msg msg.path
                  |> addOrUpdateProject state
      | ".fs" as ext ->
          match tryFindAndUpdateProject state ext msg.path with
  