anchor.diff:          member x.GetProjectCheckerOptions languageService =
               languageService.GetScriptCheckerOptions (filePath, null, source, targetFramework)
   
  +type private ProjectUniqueName = string
  +
   [<Export>]
   type ProjectFactory
       [<ImportingConstructor>] ([<Import(typeof<SVsServiceProvider>)>] serviceProvider: IServiceProvider) =
       let dte = serviceProvider.GetService<DTE, SDTE>()
       let events: EnvDTE80.Events2 option = tryCast dte.Events
  -    let cache = Cache<string, ProjectProvider>()
  - 
  -    let onProjectChanged (project: Project) =
  +    let cache = Cache<ProjectUniqueName, ProjectProvider>()
  +    
  +    let onProjectChanged (project: Project) = 
           debug "[ProjectFactory] %s changed." project.Name
           cache.Remove project.UniqueName
   
       let onProjectItemChanged (projectItem: ProjectItem) =
           projectItem.VSProject |> Option.iter (fun item -> onProjectChanged item.Project)
  - 
  +
       do match events with
           | Some events ->
               events.ProjectItemsEvents.add_ItemRenamed (fun p _ -> onProjectItemChanged p)
  
positive.code:         | _ -> fail "[ProjectFactory] Cannot subscribe for ProjectItemsEvents"
  
      member x.CreateForProject (project: Project): IProjectProvider = 
          cache.Get project.UniqueName (fun _ -> 
              let provider = new ProjectProvider (project, x.CreateForProject)
              provider.ReferencesChanged.Add(fun p -> onProjectChanged p)
              provider) :> _
  
      member x.CreateForFileInProject (buffer: ITextBuffer) (filePath: string) project: IProjectProvider option =
          if not (project === null) && not (filePath === null) && isFSharpProject project then
  
negative.code:         member x.Dispose() =
              project.VSProject
              |> Option.iter (fun p ->
                   p.Events.ReferencesEvents.remove_ReferenceAdded refAdded
                   p.Events.ReferencesEvents.remove_ReferenceChanged refChanged
                   p.Events.ReferencesEvents.remove_ReferenceRemoved refRemoved)
                              
  type internal VirtualProjectProvider (buffer: ITextBuffer, filePath: string) = 
      do Debug.Assert (filePath <> null && buffer <> null, "FilePath and Buffer should not be null.")
  