public static RouteBuilder.IBuildRoutesWithVariablesToMatch <TValuesExpanded> Int <TValues, TValuesExpanded>(
            this RouteBuilder.IBuildRoutesWithVariablesToMatch <TValues> source,
            Func <TValues, int, TValuesExpanded> valueExtender)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (valueExtender == null)
            {
                throw new ArgumentNullException("valueExtender");
            }

            return(source.Variable(valueExtender, ParseInt));
        }
        public static RouteBuilder.IBuildRoutesWithVariablesToMatch <TValuesExpanded> String <TValues, TValuesExpanded>(
            this RouteBuilder.IBuildRoutesWithVariablesToMatch <TValues> source,
            Func <TValues, NonBlankTrimmedString, TValuesExpanded> valueExtender)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (valueExtender == null)
            {
                throw new ArgumentNullException("valueExtender");
            }

            return(source.Variable(valueExtender, parser: segment => Optional.For(segment)));
        }