public async System.Threading.Tasks.Task ParseAtCurrentLocationAsync()
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            OutputLog.Clear();

            EditorUtils.SaveActiveDocument();

            DocumentLocation location = GetCurrentLocation();

            if (location == null)
            {
                string msg = "Unable to retrieve current document position.";
                OutputLog.Error(msg);
                ParseMessageWindow.Display(new ParseMessageContent(msg));
            }

            ProjectProperties properties = GetProjectData();

            if (properties == null)
            {
                string msg = "Unable to retrieve the project configuration";
                OutputLog.Error(msg);
                ParseMessageWindow.Display(new ParseMessageContent(msg));
                return;
            }

            GeneralSettingsPageGrid settings = EditorUtils.GetGeneralSettings();

            parser.PrintCommandLine = settings.OptionParserShowCommandLine;

            //TODO ~ ramonv ~ add parsing queue to avoid multiple queries at the same time

            LayoutWindow prewin = EditorUtils.GetLayoutWindow(false);

            if (prewin != null)
            {
                prewin.SetProcessing();
            }

            ParseResult result = await parser.ParseAsync(properties, location);

            //Only create or focus the window if we have a valid result
            LayoutWindow win = EditorUtils.GetLayoutWindow(result.Status == ParseResult.StatusCode.Found);

            if (win != null)
            {
                win.SetResult(result);

                if (result.Status == ParseResult.StatusCode.Found)
                {
                    EditorUtils.FocusWindow(win);
                }
            }

            DisplayResult(result);
        }