anchor.diff:                      | _ -> None
                   )
                   |> List.ofSeq
  +            
  +            let refErrors, refMeta =
  +                if refPaths = lastRefPaths then
  +                    cachedRefErrorsAndMeta.Value
  +                else
                   
  -            let metas = refPaths |> List.map this.GetRefMeta
  -            let errors = metas |> List.choose snd
  -
  -            let refMeta =
  -                if List.isEmpty metas || not (List.isEmpty errors) then None 
  -                else Some (WebSharper.Core.Metadata.Info.UnionWithoutDependencies (metas |> List.choose fst))
  -
  -            startCtx.RegisterCompilationEndAction(fun endCtx ->
  -                if not (List.isEmpty errors) then
  -                    for err in errors do    
  -                        endCtx.ReportDiagnostic(Diagnostic.Create(wsError, Location.None, err))
  -                else
  -                try
  -                    let compilation = endCtx.Compilation :?> CSharpCompilation
  -
  -                    if compilation.GetDiagnostics() |> Seq.exists (fun d -> d.Severity = DiagnosticSeverity.Error) then () else
  -
  -                    let compiler = WebSharper.Compiler.CSharp.WebSharperCSharpCompiler(ignore, UseGraphs = false)
  -
                       let referencedAsmNames =
                           refPaths
                           |> Seq.map (fun i -> 
  
positive.code:             let watcher = new FileSystemWatcher(Path.GetDirectoryName path, Path.GetFileName path)
              let onChange (_: FileSystemEventArgs) =
                  lock cachedRefMeta <| fun () ->
                  cachedRefMeta.Remove(path) |> ignore
                  watcher.Dispose() 
  
              watcher.Changed |> Event.add onChange
              watcher.Renamed |> Event.add onChange
  
negative.code:     static let wsError = 
          new DiagnosticDescriptor ("WebSharperError", "WebSharper errors", "{0}", "WebSharper", DiagnosticSeverity.Error, true, null, null)
  
      let mutable assemblyResolveHandler = null
      let mutable lastRefPaths = [ "" ]
      let mutable cachedRefErrorsAndMeta = None
  
      let cachedRefMeta = Dictionary() 
  
      member this.GetRefMeta(path) =
  