public void Visit(IVisitor visitor)
        {
            if (precedingWhitespace.Length > 0)
            {
                visitor.Whitespace(precedingWhitespace);
            }

            visitor.On();

            if (onWhitespace.Length > 0)
            {
                visitor.Whitespace(onWhitespace);
            }

            if (charDesc.Length > 0)
            {
                visitor.CharDescription(charDesc);

                if (descWhitespace.Length > 0)
                {
                    visitor.Whitespace(descWhitespace);
                }

                if (consumption != null)
                {
                    visitor.Consumption(consumption.Value);

                    if (trailingWhitespace.Length > 0)
                    {
                        visitor.Whitespace(trailingWhitespace);
                    }
                }
            }

            if (followingInvalid.Length > 0)
            {
                visitor.InvalidText(followingInvalid);
            }
        }