anchor.diff:  
           cacheItem.Value
   
  +    interface IDisposable with
  +        member x.Dispose () =
  +            if not isDisposing then
  +                isDisposing <- true
  +                x.ClearCache()
  +                cache.Dispose()
  +
  +
  +
  +[<AbstractClass>]
  +[<CompilerMessageAttribute("This API supports the FSharp.Data.SqlClient infrastructure and is not intended to be used directly from your code.", 101, IsHidden = true)>]
  +type SingleRootTypeProvider(config: TypeProviderConfig, providerName, parameters, ?isErased) as this = 
  +    inherit TypeProviderForNamespaces()
  +
  +    let cache = new CacheWithMonitors(providerName)
       do 
           let isErased = defaultArg isErased true
           let nameSpace = this.GetType().Namespace
  
positive.code:         |> Seq.toArray
          |> Array.iter (cache.Remove >> ignore)
  
      let cacheGetOrAdd(key, value: Lazy<ProvidedTypeDefinition>, monitors) = 
          let policy = CacheItemPolicy()
          monitors |> Seq.iter policy.ChangeMonitors.Add
          let existing = cache.AddOrGetExisting(key, value, policy)
  
negative.code:             then 
                  let m = cache.CreateCacheEntryChangeMonitor [ key ]
                  m.NotifyOnChanged(fun _ -> 
                      x.ClearCache()
                      invalidate()
                  )
                  changeMonitors.Add(m)
                  value 
  