Source GoToDefinitionUno(GotoDefinitionData gotoDefinitionData)
        {
            if (gotoDefinitionData.Compiler == null)
            {
                return(null);
            }

            var sourceEntity = GoToDefinition.TryGetSourceObject(
                gotoDefinitionData.Compiler,
                new Source(gotoDefinitionData.MainPackage, gotoDefinitionData.FilePath.NativePath),
                new CodeReader(gotoDefinitionData.SrcCode, gotoDefinitionData.CaretOffset),
                Parser.Parse(gotoDefinitionData.SrcCode));

            return(sourceEntity == null ? null : sourceEntity.Source);
        }
        void TextViewMouseDown(object sender, MouseButtonEventArgs e)
        {
            // close existing debugger popup immediately on text editor mouse down
            TryCloseExistingPopup(false);
            ctrlClickExecuted = false;

            if (options.CtrlClickGoToDefinition && e.ChangedButton == MouseButton.Left && Keyboard.Modifiers == ModifierKeys.Control)
            {
                // Ctrl+Click Go to definition
                var position = GetPositionFromPoint(e.GetPosition(this));
                if (position == null)
                {
                    return;
                }
                SD.AnalyticsMonitor.TrackFeature(typeof(GoToDefinition).FullName, "Ctrl+Click");
                var resolveResult         = SD.ParserService.Resolve(Adapter, position.Value.Location);
                var goToDefinitionCommand = new GoToDefinition();
                goToDefinitionCommand.Run(resolveResult);
                e.Handled         = true;
                ctrlClickExecuted = true;
            }
        }