     }
     firstMatchTest(#"[\t-\t]"#, input: "\u{8}\u{A}\u{9}", match: "\u{9}")
 
+    // FIXME: This produces a different result with and without optimizations.
+    firstMatchTest(#"[1-2]"#, input: "1️⃣", match: nil, xfail: true)
+    firstMatchTest(#"[1-2]"#, input: "1️⃣", match: nil,
+                   validateOptimizations: false)
+
     // Currently not supported in the matching engine.
     for c: UnicodeScalar in ["a", "b", "c"] {
       firstMatchTest(#"[\c!-\C-#]"#, input: "def\(c)", match: "\(c)",

    firstMatchTest(#"\u{65 301}$"#, input: eComposed, match: eComposed)

    // FIXME: Implicit \y at end of match
    firstMatchTest(#"\u{65}"#, input: eDecomposed, match: nil,
      xfail: true)
    firstMatchTest(#"\u{65}$"#, input: eDecomposed, match: nil)
    // FIXME: \y is unsupported
    firstMatchTest(#"\u{65}\y"#, input: eDecomposed, match: nil,
      xfail: true)

    // FIXME: Unicode scalars are only matched at the start of a grapheme cluster
    firstMatchTest(#"\u{301}"#, input: eDecomposed, match: "\u{301}",
      xfail: true)
    // FIXME: \y is unsupported
    firstMatchTest(#"\y\u{301}"#, input: eDecomposed, match: nil,
      xfail: true)
  }

  func testCanonicalEquivalence() throws {

      "a++a",
      ("babc", nil),
      ("baaabc", nil),
      ("bb", nil))
    firstMatchTests(
      "a+?a",
      ("babc", nil),
