private void UpdateNavigationTargets(AntlrParseResultEventArgs antlrParseResultArgs)
        {
            Contract.Requires<ArgumentNullException>(antlrParseResultArgs != null, "antlrParseResultArgs");

            NavigationTargetListener listener = new NavigationTargetListener(this, antlrParseResultArgs.Snapshot, antlrParseResultArgs.Tokens);
            ParseTreeWalker.Default.Walk(listener, antlrParseResultArgs.Result);
            _navigationTargets = listener.NavigationTargets;
            OnNavigationTargetsChanged(EventArgs.Empty);
        }
            public Listener(PhpEditorNavigationSourceProvider provider, ITextSnapshot snapshot, AntlrParseResultEventArgs antlrParseResultArgs, ICollection<IEditorNavigationTarget> navigationTargets)
            {
                Contract.Requires<ArgumentNullException>(provider != null, "provider");
                Contract.Requires<ArgumentNullException>(snapshot != null, "snapshot");
                Contract.Requires<ArgumentNullException>(antlrParseResultArgs != null, "antlrParseResultArgs");
                Contract.Requires<ArgumentNullException>(navigationTargets != null, "navigationTargets");

                _provider = provider;
                _snapshot = snapshot;
                _antlrParseResultArgs = antlrParseResultArgs;
                _navigationTargets = navigationTargets;
            }