 
     performTest("abc", concat("a", "b", "c"))
     performTest("abc\\+d*", concat("a", "b", "c", "+", .many("d")))
-    performTest("abc\\+d*?", concat("a", "b", "c", "+", .lazyMany("d")))
     performTest("abc(?:de)+fghi*k|j",
                 alt(concat("a", "b", "c",
                            .oneOrMore(.group(concat("d", "e"))),

    performTest(regex: "a(b*)c(d+)ef", input: "abbcdef",
      expectedCaptureType: (Substring, Substring).self,
      expecting: .init(captures: ("bb", "d"), capturesEqual: ==))
    performTest(regex: "a(.*)(c+)", input: "abbbbcccc",
      expectedCaptureType: (Substring, Substring).self,
      expecting: .init(captures: ("bbbbccc", "c"), capturesEqual: ==))
    performTest(regex: "a(.+)(c+)", input: "abbbbcccc",
      expectedCaptureType: (Substring, Substring).self,
      expecting: .init(captures: ("bbbbccc", "c"), capturesEqual: ==))
    performTest(regex: "a(.*?)(c+)", input: "abbbbcccc",
      expectedCaptureType: (Substring, Substring).self,
      expecting: .init(captures: ("bbbb", "cccc"), capturesEqual: ==))
    performTest(regex: "a(.+?)(c+)", input: "abbbbcccc",
      expectedCaptureType: (Substring, Substring).self,
      expecting: .init(captures: ("bbbb", "cccc"), capturesEqual: ==))
    // performTest(regex: "(?a*)*", input: "aaaa",
    //   expectedCaptureType: Substring.self,
    //   expecting: .init(captures: "aaaa", capturesEqual: ==))

                       .captureArray,
                       .endGroup,
                       labels: [1, 11, 4, 8], splits: [2, 5]))
    performTest("a.*?b+?c??",
                recode("a",
                       label(0), split(disfavoring: 1), goto(label: 2),
                       label(1), .characterClass(.any), goto(label: 0),
                       label(2),
                       label(3), "b", split(disfavoring: 3),
                       split(disfavoring: 4), goto(label: 5),
                       label(4), "c",
                       label(5),
                       labels: [1, 4, 7, 8, 13, 15], splits: [2, 10, 11]))
  }
                                
  func testVMs() {
    let tests: Array<(String, pass: [String], fail: [String])> = [
      ("a|b", ["a", "b"], ["ab", "c"]),
