protected override Range <UInt32> VisitAny(Any any, LengthCalculatorOptions argument) =>
protected override Range <UInt32> VisitCharacterRange(CharacterRange characterRange, LengthCalculatorOptions argument) =>
protected override Range <UInt32> VisitAlternation(Alternation <Char> alternation, LengthCalculatorOptions argument) { IEnumerable <Range <UInt32> > ranges = alternation.GrammarNodes.Select(node => this.Visit(node, argument)); return(new Range <UInt32>(ranges.Min(r => r.Start), ranges.Max(r => r.End))); }