 
     parseTest(
       #"()()()()()()()()()()\10"#,
-      concat((0..<10).map { _ in capture(empty()) }
+      concat(Array(repeating: capture(empty()), count: 10)
              + [backreference(.absolute(10))]),
       captures: .tuple(Array(repeating: .atom(), count: 10))
     )
     parseTest(
       #"()()()()()()()()()\10()"#,
-      concat((0..<9).map { _ in capture(empty()) }
+      concat(Array(repeating: capture(empty()), count: 9)
              + [scalar("\u{8}"), capture(empty())]),
       captures: .tuple(Array(repeating: .atom(), count: 10))
     )

    parseTest(#"\08"#, concat(scalar("\u{0}"), "8"))
    parseTest(#"\0707"#, concat(scalar("\u{38}"), "7"))

    // FIXME(Hamish): These now get printed using the unicode
    // literal syntax instead of rendered as Character. Adjust
    // testing infra to handle that.
//    parseTest(#"[\0]"#, charClass("\u{0}"))
//    parseTest(#"[\01]"#, charClass("\u{1}"))
//    parseTest(#"[\070]"#, charClass("\u{38}"))

    parseTest(#"[\07A]"#, charClass(scalar_m("\u{7}"), "A"))
    parseTest(#"[\08]"#, charClass(scalar_m("\u{0}"), "8"))

    parseTest(#"\11"#, scalar("\u{9}"))
    parseTest(
      String(repeating: "()", count: 11) + #"\11"#,
      concat(Array(repeating: capture(empty()), count: 11)
             + [backreference(.absolute(11))]),
      captures: .tuple(Array(repeating: .atom(), count: 11))
    )
    parseTest(#"\011"#, scalar("\u{9}"))
    parseTest(
      String(repeating: "()", count: 11) + #"\011"#,
      concat(Array(repeating: capture(empty()), count: 11) + [scalar("\u{9}")]),
      captures: .tuple(Array(repeating: .atom(), count: 11))
    )

