public virtual AltAST GetOutermostAltNode() { if (this is AltAST && Parent.Parent is RuleAST) { return (AltAST)this; } if (Parent != null) return ((GrammarAST)Parent).GetOutermostAltNode(); return null; }