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

    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("\\\(i)", backreference(.absolute(i)))
      parseTest(
        "()()()()()()()()()\\\(i)",
        concat(Array(repeating: capture(empty()), count: 9)
               + [backreference(.absolute(i))]),
        captures: .tuple(Array(repeating: .atom(), count: 9))
      )
