public static GoToMouseProcessor GetMouseProcessorForView(IWpfTextView textView, 
                                                                  TextViewConnectionListener textViewConnectionListener,
                                                                  IViewTagAggregatorFactoryService viewTagAggregatorFactoryService,
                                                                  GoToLocationService goToLocationService) {

            return textView.Properties.GetOrCreateSingletonProperty(() => new GoToMouseProcessor(textView, textViewConnectionListener, viewTagAggregatorFactoryService, goToLocationService));
        }
        public GoToMouseProcessorProvider(TextViewConnectionListener textViewConnectionListener,
                                          IViewTagAggregatorFactoryService viewTagAggregatorFactoryService,
                                          GoToLocationService goToLocationService) {

            _textViewConnectionListener      = textViewConnectionListener;
            _viewTagAggregatorFactoryService = viewTagAggregatorFactoryService;
            _goToLocationService             = goToLocationService;
        }
        GoToMouseProcessor(IWpfTextView textView, 
                           TextViewConnectionListener textViewConnectionListener, 
                           IViewTagAggregatorFactoryService viewTagAggregatorFactoryService,
                           GoToLocationService goToLocationService) {
            _textView            = textView;
            _goToLocationService = goToLocationService;
            _tagAggregator       = viewTagAggregatorFactoryService.CreateTagAggregator<GoToTag>(textView);
            _keyState            = ModifierKeyState.GetStateForView(textView, textViewConnectionListener);

            _textView.LostAggregateFocus += OnTextViewLostAggregateFocus; 
            _keyState.KeyStateChanged    += OnKeyStateChanged;

            textViewConnectionListener.AddDisconnectAction(textView, RemoveMouseProcessorForView);
        }
        internal IntraTextGoToAdornment(IntraTextGoToTag goToTag, IWpfTextView textView, GoToLocationService goToLocationService) {

            _textView            = textView;
            _goToLocationService = goToLocationService;
            _crispImage          = new CrispImage();

            RenderOptions.SetBitmapScalingMode(_crispImage, BitmapScalingMode.NearestNeighbor);

            Width       = 20;
            Height      = 20;
            Background  = Brushes.Transparent;
            BorderBrush = Brushes.Transparent;
            Cursor      = Cursors.Hand;
            Margin      = new Thickness(0, 0, 0, 0);            
            Content     = _crispImage;

            Click += OnClick;
            
            Update(goToTag);
        }