 let suffixed = optional ++ %"z" --> { $0 + $1 }
 let sandwiched = prefixed ++ %"z" --> { $0 + $1 }
 
+private let one = oneOf(["x", "y", "z"])
+private let any = anyOf(["x", "y", "z"])
+private let all = allOf(["x", "y", "z"])
+
 
 // MARK: - Imports
 

	// MARK: One-of

	func testOneOfParsesFirstMatch() {
		let xyz = oneOf(["x", "y", "z"])
		assertTree(xyz, "xyz", ==, "x")
		assertTree(xyz, "yzx", ==, "y")
		assertTree(xyz, "zxy", ==, "z")
	}


	// MARK: Any-of

	func testAnyOfParsesAnArrayOfMatchesPreservingOrder() {
		let xyz = anyOf(["x", "y", "z"])
		assertTree(xyz, "xy", ==, ["x", "y"])
		assertTree(xyz, "yx", ==, ["y", "x"])
		assertTree(xyz, "zxy", ==, ["z", "x", "y"])
	}

	func testAnyOfRejectsWhenNoneMatch() {

	}

	func testAnyOfOnlyParsesFirstMatch() {
		assertTree(any, "xyy", ==, ["x", "y"])
	}


	// MARK: All-of

	func testAllOfParsesAnArrayOfMatchesPreservingOrder() {
		assertTree(all, "xy", ==, ["x", "y"])
		assertTree(all, "yx", ==, ["y", "x"])
		assertTree(all, "zxy", ==, ["z", "x", "y"])
	}

	func testAllOfRejectsWhenNoneMatch() {
