anchor.diff:              watcher.Renamed |> Event.add onChange
               watcher.Deleted |> Event.add onChange
   
  -            cachedRefMeta.Add(path, (m, err))    
  +            cachedRefMeta.Add(path, (m, err, watcher))    
               m, err        
  +
  +    interface IDisposable with
  +        member this.Dispose() =
  +            lock cachedRefMeta <| fun () ->
  +                for _, _, watcher in cachedRefMeta.Values do
  +                    watcher.Dispose()
  +                cachedRefMeta.Clear()
   
       override this.SupportedDiagnostics =
           ImmutableArray.Create(wsWarning, wsError)
  
positive.code:                 else
                  try
                      let compilation = endCtx.Compilation :?> CSharpCompilation
  
                      let compiler = WebSharper.Compiler.CSharp.WebSharperCSharpCompiler(ignore)
  
  
negative.code:     member this.GetRefMeta(path) =
          lock cachedRefMeta <| fun () ->
          match cachedRefMeta.TryGetValue path with
          | true, (m, err, _) -> m, err
          | _ ->
              let mutable err = None
              let m = 
  