             case Literal.zero:
                 return decodeNumberLeadingZero(loc, sign: .Positive)
 
-            case Literal.one
-            ,    Literal.two
-            ,    Literal.three
-            ,    Literal.four
-            ,    Literal.five
-            ,    Literal.six
-            ,    Literal.seven
-            ,    Literal.eight
-            ,    Literal.nine:
+            case Literal.one...Literal.nine:
                 return decodeNumberPreDecimalDigits(loc, sign: .Positive)
 
             case Literal.n:

        while loc < input.count {
            let c = input[loc]
            switch c {
            case Literal.zero
            ,    Literal.one
            ,    Literal.two
            ,    Literal.three
            ,    Literal.four
            ,    Literal.five
            ,    Literal.six
            ,    Literal.seven
            ,    Literal.eight
            ,    Literal.nine:
                value = 10 * value + Double(c - Literal.zero)
                ++loc


        case Literal.zero:
            return decodeNumberLeadingZero(start, sign: .Negative)

        case Literal.one...Literal.nine:
            return decodeNumberPreDecimalDigits(start, sign: .Negative)

        default:
