public override Q Visit <Q>(IVisitorAST <Q> visitor) => visitor.Visit(this);
public override T Visit <T>(IVisitorAST <T> visitor) => visitor.Visit(this);
// visitor public virtual T Visit <T>(IVisitorAST <T> visitor) => visitor.Visit(this);