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

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

            return(source.Variable(valueExtender: segment => segment, parser: segment => Optional.For(segment)));
        }
        public static RouteBuilder.IBuildRoutesWithVariablesToMatch <TValues> Int <TValues>(this RouteBuilder source, Func <int, TValues> valueExtender)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (valueExtender == null)
            {
                throw new ArgumentNullException("valueExtender");
            }

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

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