anchor.diff:  open Microsoft.VisualStudio.Shell
   open EnvDTE
   
  +type IMenuCommand =
  +    inherit IOleCommandTarget
  +    abstract IsAdded: bool with get, set
  +    abstract NextTarget: IOleCommandTarget with get, set
  +
   type NoPeekDefinitionFilter() =
  -    member val IsAdded = false with get, set
  -    member val NextTarget: IOleCommandTarget = null with get, set
  +    interface IMenuCommand with
  +        member val IsAdded = false with get, set
  +        member val NextTarget = null with get, set
   
  -    interface IOleCommandTarget with
           member x.Exec (pguidCmdGroup, nCmdId, nCmdexecopt, pvaIn, pvaOut) =
               if pguidCmdGroup = VSConstants.VsStd12 && 
                   (nCmdId = uint32 VSConstants.VSStd12CmdID.PeekDefinition
  
positive.code:     ([<Import(typeof<SVsServiceProvider>)>] serviceProvider: System.IServiceProvider,
       editorFactory: IVsEditorAdaptersFactoryService) =
    
      let addCommandFilter (viewAdapter: IVsTextView) (commandFilter: NoPeekDefinitionFilter) =
          if not commandFilter.IsAdded then
              match viewAdapter.AddCommandFilter(commandFilter) with
              | VSConstants.S_OK, next ->
  
negative.code:                    | VisualStudioVersion.VS2013 -> 
                          // Make sure that Peek Definition menu items are disabled on VS2013
                          addCommandFilter textViewAdapter (new NoPeekDefinitionFilter())
                     | _ -> 
                          addCommandFilter textViewAdapter (new AlwaysPeekDefinitionFilter())
          