anchor.diff:          else
               timer.Tick.RemoveHandler(onElapsed)
               timer.Stop()
  -
  -    /// Gets whether this monitor is currently listening for option changes
  -    member __.IsListening = timer.IsEnabled
positive.code:     let dte = serviceProvider.GetService<DTE, SDTE>()
      
      member __.GetOptions() =
          let taskListOptions = dte.get_Properties("Environment", "TaskList")
          let mutable ct = None
          for o in taskListOptions do
              if o.Name = "CommentTokens" then
                  ct <- Some((o.Value :?> obj[]) |> Array.map (fun o -> o :?> string))
  
          if ct.IsSome then
              ct.Value |> Array.map (fun s -> let parts = s.Split(':') in
                                                  { Comment = parts.[0]; Priority = Int32.Parse(parts.[1]) })
          else
              [| CommentOption.Default |]
      
  
  type internal OptionsChangedEventArgs(oldOptions: CommentOption[], newOptions: CommentOption[]) =
      inherit EventArgs()
  
      member __.OldOptions = oldOptions
      member __.NewOptions = newOptions
  
  
  
negative.code:         new EventHandler(fun _ _ ->
                              let newOptions = optionsReader.GetOptions()
                              if haveOptionsChanged newOptions then
                                  optionsChanged.Trigger(new OptionsChangedEventArgs(newOptions))
                              currentOptions <- newOptions
          )
  
  