anchor.diff:  
       override x.OnFileAddedToProject(e) =
           base.OnFileAddedToProject(e)
  -        invalidateFiles(e)
  +        if not self.Loading then invalidateFiles(e)
   
       override x.OnFileRemovedFromProject(e) =
           base.OnFileRemovedFromProject(e)
  -        invalidateFiles(e)
  +        if not self.Loading then invalidateFiles(e)
   
       override x.OnFileRenamedInProject(e) =
           base.OnFileRenamedInProject(e)
  -        invalidateFiles(e)
  +        if not self.Loading then invalidateFiles(e)
   
       override x.OnFilePropertyChangedInProject(e) =
           base.OnFilePropertyChangedInProject(e)
  -        invalidateFiles(e)
  +        if not self.Loading then invalidateFiles(e)
   
       override x.OnReferenceAddedToProject(e) =
           base.OnReferenceAddedToProject(e)
  -        invalidateProjectFile()
  +        if not self.Loading then invalidateProjectFile()
   
       override x.OnReferenceRemovedFromProject(e) =
           base.OnReferenceRemovedFromProject(e)
  -        invalidateProjectFile()
  +        if not self.Loading then invalidateProjectFile()
   
       override x.OnDispose () =
  -        invalidateProjectFile()
  +        if not self.Loading then invalidateProjectFile()
   
           // FIXME: is it correct to do it every time a project is disposed?
  -        langServ.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
  +        //Should only be done on solution close
  +        //langServ.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
           base.OnDispose ()
  
positive.code:             if MDLanguageService.SupportedFileName (projectFileEvent.ProjectFile.FilePath.ToString()) then
                  invalidateProjectFile()
  
      override x.OnInitialize() = 
          base.OnInitialize()
  
      override x.OnGetDefaultImports (imports) = 
          base.OnGetDefaultImports (imports);
          // By default projects use the F# 3.1 targets file unless only 3.0 is available on the machine.
          // New projects will be created with this targets file
          // If FSharp 3.1 is available, use it. If not, use 3.0
          if MSBuildProjectService.IsTargetsAvailable("$(MSBuildExtensionsPath32)\\..\\Microsoft SDKs\\F#\\3.1\\Framework\\v4.0\\Microsoft.FSharp.Targets") then
              imports.Add ("$(MSBuildExtensionsPath32)\\..\\Microsoft SDKs\\F#\\3.1\\Framework\\v4.0\\Microsoft.FSharp.Targets");
          else
              imports.Add ("$(MSBuildExtensionsPath32)\\..\\Microsoft SDKs\\F#\\3.0\\Framework\\v4.0\\Microsoft.FSharp.Targets");
      
      override x.OnWriteProject(monitor, msproject) = 
          base.OnWriteProject(monitor, msproject)
          // This updates the old guid to the new one on saving the project
          try 
              let fsimportExists = 
                  msproject.Imports 
                  |> Seq.exists 
                         (fun import -> import.Project.EndsWith("FSharp.Targets", StringComparison.OrdinalIgnoreCase))
              if fsimportExists then 
                  msproject.GetGlobalPropertyGroup().GetProperties()
                  |> Seq.tryFind (fun p -> p.Name = "ProjectTypeGuids")
                  |> Option.iter (fun guids -> 
                         guids.Element.InnerText <- guids.Element.InnerText.Split
                                                        ([| ';' |], StringSplitOptions.RemoveEmptyEntries)
                                                    |> Array.filter 
                                                           (fun guid -> 
                                                           not 
                                                               (guid.Equals
                                                                    ("{4925A630-B079-445D-BCD4-3A9C94FE9307}", 
                                                                     StringComparison.OrdinalIgnoreCase)))
                                                    |> String.concat ";")
          with exn -> LoggingService.LogWarning("Failed to remove old F# guid", exn)
      
  
negative.code:     override x.OnCreateCompilationParameters(config : DotNetProjectConfiguration, kind : ConfigurationKind) : DotNetCompilerParameters = 
          let pars = new FSharpCompilerParameters()
          // Set up the default options
          if supportedPlatforms |> Array.exists (fun x -> x.Contains(config.Platform)) then pars.PlatformTarget <- config.Platform
          match kind with
          | ConfigurationKind.Debug -> 
              pars.AddDefineSymbol "DEBUG"
              pars.Optimize <- false
              pars.GenerateTailCalls <- false
          | ConfigurationKind.Release -> 
              pars.Optimize <- true
              pars.GenerateTailCalls <- true
          | _ -> ()
          //pars.DocumentationFile <- config.CompiledOutputName.FileNameWithoutExtension + ".xml"
          pars :> DotNetCompilerParameters
      
      override x.OnGetSupportedClrVersions() = 
  