anchor.diff:                  return opts
           }
   
  -    member x.ReferencesChanged = referencesChanged.Publish
  -
       interface IProjectProvider with
           member x.IsForStandaloneScript = false
           member x.ProjectFileName = projectFileName.Value
  
positive.code:         member x.GetProjectCheckerOptions languageService =
              languageService.GetScriptCheckerOptions (filePath, null, source, targetFramework)
  
  [<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) =
          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)
  
negative.code:         | _ -> fail "[ProjectFactory] Cannot subscribe for ProjectItemsEvents"
  
      member x.CreateForProject (project: Project): IProjectProvider = 
          cache.Get project.UniqueName (fun _ ->
              new ProjectProvider (project, x.CreateForProject, onProjectChanged)) :> _
  
      member x.CreateForFileInProject (buffer: ITextBuffer) (filePath: string) project: IProjectProvider option =
          if not (project === null) && not (filePath === null) && isFSharpProject project then
  