/// <inheritdoc /> public Node Visit(MethodDeclarationParseNode d) { var ret = new MethodNode(d.Token, d); var sig = (SignatureNode)d.Signature.Visit(this); ret.Signature = sig; ret.Annotations = sig.Annotations; string name = sig.Name; ret.Confidential = (d.Signature.Annotations != null && d.Signature.Annotations.HasAnnotation("confidential")); ret.Abstract = (d.Signature.Annotations != null && d.Signature.Annotations.HasAnnotation("abstract")); foreach (ParseNode p in d.Body) { if (!(p is CommentParseNode)) { ret.Add(p.Visit(this)); } } // Indicate whether this method returns a fresh object ret.Fresh = (d.Body.Count > 0 && d.Body[d.Body.Count - 1] is ObjectParseNode); return(ret); }