public override void VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
        {
            // Dong Xie: node.Name.GetText()
            if (node.Name.GetText().ToString() != PublishKeyword)
            {
                return;
            }

            PublicationCalls.Add(node);
            Publications.Add(node.Ancestors().OfType <InvocationExpressionSyntax>().Last());
        }
        public IEnumerable <string> DumpPublicationData()
        {
            if (!PublicationCalls.Any())
            {
                yield break;
            }

            foreach (var pub in Publications)
            {
                yield return(string.Format("{0}.{1}.{2}:{3}{4}",
                                           pub.FirstAncestorOrSelf <NamespaceDeclarationSyntax>().Name.GetText(),
                                           pub.FirstAncestorOrSelf <ClassDeclarationSyntax>().Identifier.Text,
                                           pub.FirstAncestorOrSelf <MethodDeclarationSyntax>().Identifier.Text,
                                           pub.Span.ToString(),
                                           Environment.NewLine));
            }
        }