| Index: tests/corelib/regexp/pcre_test.dart
 | 
| diff --git a/tests/corelib/regexp/pcre_test.dart b/tests/corelib/regexp/pcre_test.dart
 | 
| index a8b62066f5d2b82ee73e6132f91942f86fb9a205..dbcce20484067a6b31b2d90ac897f5b1b30670f3 100644
 | 
| --- a/tests/corelib/regexp/pcre_test.dart
 | 
| +++ b/tests/corelib/regexp/pcre_test.dart
 | 
| @@ -126,11 +126,16 @@ void main() {
 | 
|    res.add(new RegExp(r"\Aabc", multiLine: true, caseSensitive: false));
 | 
|    res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
 | 
|    res.add(new RegExp(r"(?!alphabet)[ab]", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"The next three are in testinput2 because they have variable length branches"));
 | 
| -  res.add(new RegExp(r"This one is here because Perl 5.005_02 doesn't fail it", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"This one is here because I think Perl 5.005_02 gets the setting of $1 wrong", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"The next three are in testinput2 because they have variable length branches"));
 | 
| +  res.add(new RegExp(r"This one is here because Perl 5.005_02 doesn't fail it",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"This one is here because I think Perl 5.005_02 gets the setting of $1 wrong",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"^(a\1?){4}$", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"These are syntax tests from Perl 5.005", caseSensitive: false));
 | 
| +  res.add(new RegExp(r"These are syntax tests from Perl 5.005",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"a[]b"));
 | 
|    res.add(new RegExp(r"\1"));
 | 
|    res.add(new RegExp(r"\2"));
 | 
| @@ -145,7 +150,9 @@ void main() {
 | 
|    res.add(new RegExp(r"(.{16})", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^(a|(bc))de(f)", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^abc\00def", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)?)?)?)?)?)?)?)?)?otherword", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)?)?)?)?)?)?)?)?)?otherword",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r".*X", caseSensitive: false));
 | 
|    res.add(new RegExp(r".*X", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(.*X|^B)", caseSensitive: false));
 | 
| @@ -229,11 +236,19 @@ void main() {
 | 
|    res.add(new RegExp(r"[[:rhubarb:]]", caseSensitive: false));
 | 
|    res.add(new RegExp(r"[[:upper:]]", caseSensitive: false));
 | 
|    res.add(new RegExp(r"[[:lower:]]", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"This one's here because of the large output vector needed", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"This one's here because Perl does this differently and PCRE can't at present", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"This one's here because of the large output vector needed",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"This one's here because Perl does this differently and PCRE can't at present",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"(main(O)?)+", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"These are all cases where Perl does it differently (nested captures)", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"These are all cases where Perl does it differently (nested captures)",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"^(a(b)?)+$", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^(aa(bb)?)+$", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^(aa|aa(bb))+$", caseSensitive: false));
 | 
| @@ -251,8 +266,10 @@ void main() {
 | 
|    res.add(new RegExp(r"a", caseSensitive: false));
 | 
|    res.add(new RegExp(r"[\s]"));
 | 
|    res.add(new RegExp(r"[\S]"));
 | 
| -  res.add(new RegExp(r"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
 | 
| -  res.add(new RegExp(r"\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
 | 
|    res.add(new RegExp(r"\Q\E"));
 | 
|    res.add(new RegExp(r"\Q\Ex"));
 | 
|    res.add(new RegExp(r" \Q\E"));
 | 
| @@ -305,13 +322,21 @@ void main() {
 | 
|    res.add(new RegExp(r"((.*)a|(.*)b)z\2", caseSensitive: false));
 | 
|    res.add(new RegExp(r"((.*)a|(.*)b)z\3", caseSensitive: false));
 | 
|    res.add(new RegExp(r"((.*)a|^(.*)b)z\3", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"(a)(bc)", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(a+)*zz", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)", caseSensitive: false));
 | 
| +  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"a*.*b", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(a|b)*.?c", caseSensitive: false));
 | 
|    res.add(new RegExp(r"abcde", caseSensitive: false));
 | 
| @@ -338,7 +363,9 @@ void main() {
 | 
|    res.add(new RegExp(r"ab.cd", caseSensitive: false));
 | 
|    res.add(new RegExp(r"ab.cd", caseSensitive: false));
 | 
|    res.add(new RegExp(r"a(b)c", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"Inthisnexttest,Jisnotsetattheouterlevel;consequentlyitisn'tsetinthepattern'soptions;consequentlypcre_get_named_substring()producesarandomvalue.", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"Inthisnexttest,Jisnotsetattheouterlevel;consequentlyitisn'tsetinthepattern'soptions;consequentlypcre_get_named_substring()producesarandomvalue.",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"\777", caseSensitive: false));
 | 
|    res.add(new RegExp(r"\s*,\s*", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
 | 
| @@ -350,7 +377,9 @@ void main() {
 | 
|    res.add(new RegExp(r"abc", caseSensitive: false));
 | 
|    res.add(new RegExp(r".*", caseSensitive: false));
 | 
|    res.add(new RegExp(r"\w+(.)(.)?def", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(.(.))", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(.(.))",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"()[ab]xyz", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(|)[ab]xyz", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(|c)[ab]xyz", caseSensitive: false));
 | 
| @@ -365,7 +394,9 @@ void main() {
 | 
|    res.add(new RegExp(r"(a+|b*)[cd]", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(a*|b+)[cd]", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(a+|b+)[cd]", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"a*\d"));
 | 
|    res.add(new RegExp(r"a*\D"));
 | 
|    res.add(new RegExp(r"0*\d"));
 | 
| @@ -784,8 +815,10 @@ void main() {
 | 
|    res.add(new RegExp(r"^[\P{L&}]X"));
 | 
|    res.add(new RegExp(r"^(\p{Z}[^\p{C}\p{Z}]+)*$"));
 | 
|    res.add(new RegExp(r"([\pL]=(abc))*X"));
 | 
| -  res.add(new RegExp(r"^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}"));
 | 
| -  res.add(new RegExp(r"The next two are special cases where the lengths of the different cases of the \nsame character differ. The first went wrong with heap frame storage; the 2nd\nwas broken in all cases."));
 | 
| +  res.add(new RegExp(
 | 
| +      r"^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"The next two are special cases where the lengths of the different cases of the \nsame character differ. The first went wrong with heap frame storage; the 2nd\nwas broken in all cases."));
 | 
|    res.add(new RegExp(r"Check property support in non-UTF-8 mode"));
 | 
|    res.add(new RegExp(r"\p{L}{4}"));
 | 
|    res.add(new RegExp(r"\X{1,3}\d"));
 | 
| @@ -814,7 +847,8 @@ void main() {
 | 
|    res.add(new RegExp(r"^\p{Deseret}"));
 | 
|    res.add(new RegExp(r"^\p{Osmanya}"));
 | 
|    res.add(new RegExp(r"\p{Zl}"));
 | 
| -  res.add(new RegExp(r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
 | 
|    res.add(new RegExp(r"(A)\1", caseSensitive: false));
 | 
|    res.add(new RegExp(r" End of testinput6 "));
 | 
|    res.add(new RegExp(r"abc"));
 | 
| @@ -904,8 +938,10 @@ void main() {
 | 
|    res.add(new RegExp(r"([\da-f:]+)$", caseSensitive: false));
 | 
|    res.add(new RegExp(r"^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$"));
 | 
|    res.add(new RegExp(r"^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$"));
 | 
| -  res.add(new RegExp(r"^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$"));
 | 
| -  res.add(new RegExp(r"^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$"));
 | 
| +  res.add(
 | 
| +      new RegExp(r"^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$"));
 | 
|    res.add(new RegExp(r"^(?=ab(de))(abd)(e)"));
 | 
|    res.add(new RegExp(r"^(?!(ab)de|x)(abd)(f)"));
 | 
|    res.add(new RegExp(r"^(?=(ab(cd)))(ab)"));
 | 
| @@ -924,7 +960,8 @@ void main() {
 | 
|    res.add(new RegExp(r"^\d{8}\w{2,}"));
 | 
|    res.add(new RegExp(r"^[aeiou\d]{4,5}$"));
 | 
|    res.add(new RegExp(r"^[aeiou\d]{4,5}?"));
 | 
| -  res.add(new RegExp(r"^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]"));
 | 
|    res.add(new RegExp(r"^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d"));
 | 
|    res.add(new RegExp(r"^12.34"));
 | 
|    res.add(new RegExp(r"\w+(?=\t)"));
 | 
| @@ -941,8 +978,10 @@ void main() {
 | 
|    res.add(new RegExp(r"^[ab]{1,3}?(ab*|b)"));
 | 
|    res.add(new RegExp(r"^[ab]{1,3}?(ab*?|b)"));
 | 
|    res.add(new RegExp(r"^[ab]{1,3}(ab*?|b)"));
 | 
| -  res.add(new RegExp(r'(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\)|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")*<(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*,(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*)*:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*>)(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*'));
 | 
| -  res.add(new RegExp(r'[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)'));
 | 
| +  res.add(new RegExp(
 | 
| +      r'(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\)|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")*<(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*,(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*)*:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*>)(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*'));
 | 
| +  res.add(new RegExp(
 | 
| +      r'[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)'));
 | 
|    res.add(new RegExp(r"abc\x0def\x00pqr\x000xyz\x0000AB"));
 | 
|    res.add(new RegExp(r"^[\000-\037]"));
 | 
|    res.add(new RegExp(r"\0*"));
 | 
| @@ -1002,7 +1041,8 @@ void main() {
 | 
|    res.add(new RegExp(r"[^a]", caseSensitive: false));
 | 
|    res.add(new RegExp(r"[^az]"));
 | 
|    res.add(new RegExp(r"[^az]", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"));
 | 
|    res.add(new RegExp(r"P[^*]TAIRE[^*]{1,6}?LL"));
 | 
|    res.add(new RegExp(r"P[^*]TAIRE[^*]{1,}?LL"));
 | 
|    res.add(new RegExp(r"(\.\d\d[1-9]?)\d+"));
 | 
| @@ -1052,7 +1092,8 @@ void main() {
 | 
|    res.add(new RegExp(r"(.*X|^B)"));
 | 
|    res.add(new RegExp(r"(.*X|^B)", multiLine: true));
 | 
|    res.add(new RegExp(r"^.*B"));
 | 
| -  res.add(new RegExp(r"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"));
 | 
|    res.add(new RegExp(r"^\d\d\d\d\d\d\d\d\d\d\d\d"));
 | 
|    res.add(new RegExp(r"^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]"));
 | 
|    res.add(new RegExp(r"^[abc]{12}"));
 | 
| @@ -1068,7 +1109,9 @@ void main() {
 | 
|    res.add(new RegExp(r".*?"));
 | 
|    res.add(new RegExp(r"\b"));
 | 
|    res.add(new RegExp(r"\b"));
 | 
| -  res.add(new RegExp(r"<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>", caseSensitive: false));
 | 
| +  res.add(new RegExp(
 | 
| +      r"<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"a[^a]b"));
 | 
|    res.add(new RegExp(r"a.b"));
 | 
|    res.add(new RegExp(r"a[^a]b"));
 | 
| @@ -1091,8 +1134,10 @@ void main() {
 | 
|    res.add(new RegExp(r"([ab]*?)*"));
 | 
|    res.add(new RegExp(r"([^a]*?)*"));
 | 
|    res.add(new RegExp(r"([^ab]*?)*"));
 | 
| -  res.add(new RegExp(r"The following tests are taken from the Perl 5.005 test suite; some of them"));
 | 
| -  res.add(new RegExp(r"are compatible with 5.004, but I'd rather not have to sort them out."));
 | 
| +  res.add(new RegExp(
 | 
| +      r"The following tests are taken from the Perl 5.005 test suite; some of them"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"are compatible with 5.004, but I'd rather not have to sort them out."));
 | 
|    res.add(new RegExp(r"abc"));
 | 
|    res.add(new RegExp(r"ab*c"));
 | 
|    res.add(new RegExp(r"ab*bc"));
 | 
| @@ -1283,8 +1328,10 @@ void main() {
 | 
|    res.add(new RegExp(r"(bc+d$|ef*g.|h?i(j|k))", caseSensitive: false));
 | 
|    res.add(new RegExp(r"((((((((((a))))))))))", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(((((((((a)))))))))", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))", caseSensitive: false));
 | 
| -  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))", caseSensitive: false));
 | 
| +  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",
 | 
| +      caseSensitive: false));
 | 
| +  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",
 | 
| +      caseSensitive: false));
 | 
|    res.add(new RegExp(r"multiple words of text", caseSensitive: false));
 | 
|    res.add(new RegExp(r"multiple words", caseSensitive: false));
 | 
|    res.add(new RegExp(r"(.*)c(.*)", caseSensitive: false));
 | 
| @@ -1324,7 +1371,8 @@ void main() {
 | 
|    res.add(new RegExp(r"(a|x)*ab"));
 | 
|    res.add(new RegExp(r"(a)*ab"));
 | 
|    res.add(new RegExp(r"(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))"));
 | 
| -  res.add(new RegExp(r"(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))"));
 | 
|    res.add(new RegExp(r"foo\w*\d{4}baz"));
 | 
|    res.add(new RegExp(r"x(~~)*(?:(?:F)?)?"));
 | 
|    res.add(new RegExp(r"^a{3}c"));
 | 
| @@ -1627,7 +1675,8 @@ void main() {
 | 
|    res.add(new RegExp(r"^[\P{L&}]X"));
 | 
|    res.add(new RegExp(r"Check property support in non-UTF-8 mode"));
 | 
|    res.add(new RegExp(r"\p{L}{4}"));
 | 
| -  res.add(new RegExp(r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
 | 
| +  res.add(new RegExp(
 | 
| +      r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
 | 
|    res.add(new RegExp(r" End "));
 | 
|    res.add(new RegExp(r"^[[:alnum:]]", multiLine: true));
 | 
|    res.add(new RegExp(r"a", multiLine: true, caseSensitive: false));
 | 
| @@ -1668,12 +1717,27 @@ void main() {
 | 
|    assertThrows(() => new RegExp(r"^*"));
 | 
|    assertThrows(() => new RegExp(r"(abc"));
 | 
|    assertThrows(() => new RegExp(r"(?# abc"));
 | 
| -  assertToStringEquals("cat", res[11].firstMatch("this sentence eventually mentions a cat"), 20);
 | 
| -  assertToStringEquals("elephant", res[11].firstMatch("this sentences rambles on and on for a while and then reaches elephant"), 21);
 | 
| -  assertToStringEquals("cat", res[12].firstMatch("this sentence eventually mentions a cat"), 22);
 | 
| -  assertToStringEquals("elephant", res[12].firstMatch("this sentences rambles on and on for a while and then reaches elephant"), 23);
 | 
| -  assertToStringEquals("CAT", res[13].firstMatch("this sentence eventually mentions a CAT cat"), 24);
 | 
| -  assertToStringEquals("elephant", res[13].firstMatch("this sentences rambles on and on for a while to elephant ElePhant"), 25);
 | 
| +  assertToStringEquals(
 | 
| +      "cat", res[11].firstMatch("this sentence eventually mentions a cat"), 20);
 | 
| +  assertToStringEquals(
 | 
| +      "elephant",
 | 
| +      res[11].firstMatch(
 | 
| +          "this sentences rambles on and on for a while and then reaches elephant"),
 | 
| +      21);
 | 
| +  assertToStringEquals(
 | 
| +      "cat", res[12].firstMatch("this sentence eventually mentions a cat"), 22);
 | 
| +  assertToStringEquals(
 | 
| +      "elephant",
 | 
| +      res[12].firstMatch(
 | 
| +          "this sentences rambles on and on for a while and then reaches elephant"),
 | 
| +      23);
 | 
| +  assertToStringEquals("CAT",
 | 
| +      res[13].firstMatch("this sentence eventually mentions a CAT cat"), 24);
 | 
| +  assertToStringEquals(
 | 
| +      "elephant",
 | 
| +      res[13].firstMatch(
 | 
| +          "this sentences rambles on and on for a while to elephant ElePhant"),
 | 
| +      25);
 | 
|    assertThrows(() => new RegExp(r"{4,5}abc"));
 | 
|    assertToStringEquals("abcb,a,b,c", res[18].firstMatch("abcb"), 27);
 | 
|    assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O0abcb"), 28);
 | 
| @@ -1695,8 +1759,10 @@ void main() {
 | 
|    assertNull(res[20].firstMatch("*** Failers"), 44);
 | 
|    assertNull(res[20].firstMatch("abc\n"), 45);
 | 
|    assertNull(res[20].firstMatch("abc\ndef"), 46);
 | 
| -  assertToStringEquals("the quick brown fox", res[22].firstMatch("the quick brown fox"), 47);
 | 
| -  assertToStringEquals("the quick brown fox", res[22].firstMatch("this is a line with the quick brown fox"), 48);
 | 
| +  assertToStringEquals(
 | 
| +      "the quick brown fox", res[22].firstMatch("the quick brown fox"), 47);
 | 
| +  assertToStringEquals("the quick brown fox",
 | 
| +      res[22].firstMatch("this is a line with the quick brown fox"), 48);
 | 
|    assertToStringEquals("abc", res[23].firstMatch("abcdef"), 49);
 | 
|    assertToStringEquals("abc", res[23].firstMatch("abcdefB"), 50);
 | 
|    assertToStringEquals("defabc,abc,abc,", res[24].firstMatch("defabc"), 51);
 | 
| @@ -1707,11 +1773,15 @@ void main() {
 | 
|    assertToStringEquals("abc", res[26].firstMatch("abcdefB"), 56);
 | 
|    assertToStringEquals("defabc,abc,abc,", res[27].firstMatch("defabc"), 57);
 | 
|    assertToStringEquals("Zdefabc,abc,abc,", res[27].firstMatch("Zdefabc"), 58);
 | 
| -  assertToStringEquals("the quick brown fox", res[28].firstMatch("the quick brown fox"), 59);
 | 
| +  assertToStringEquals(
 | 
| +      "the quick brown fox", res[28].firstMatch("the quick brown fox"), 59);
 | 
|    assertNull(res[28].firstMatch("*** Failers"), 60);
 | 
| -  assertToStringEquals("The Quick Brown Fox", res[28].firstMatch("The Quick Brown Fox"), 61);
 | 
| -  assertToStringEquals("the quick brown fox", res[29].firstMatch("the quick brown fox"), 62);
 | 
| -  assertToStringEquals("The Quick Brown Fox", res[29].firstMatch("The Quick Brown Fox"), 63);
 | 
| +  assertToStringEquals(
 | 
| +      "The Quick Brown Fox", res[28].firstMatch("The Quick Brown Fox"), 61);
 | 
| +  assertToStringEquals(
 | 
| +      "the quick brown fox", res[29].firstMatch("the quick brown fox"), 62);
 | 
| +  assertToStringEquals(
 | 
| +      "The Quick Brown Fox", res[29].firstMatch("The Quick Brown Fox"), 63);
 | 
|    assertNull(res[30].firstMatch("*** Failers"), 64);
 | 
|    assertNull(res[30].firstMatch("abc\ndef"), 65);
 | 
|    assertToStringEquals("abc", res[31].firstMatch("abc"), 66);
 | 
| @@ -1719,7 +1789,8 @@ void main() {
 | 
|    assertToStringEquals("abc,abc", res[33].firstMatch("abc"), 68);
 | 
|    assertThrows(() => new RegExp(r")"));
 | 
|    assertToStringEquals("-pr", res[35].firstMatch("co-processors, and for"), 70);
 | 
| -  assertToStringEquals("<def>ghi<klm>", res[36].firstMatch("abc<def>ghi<klm>nop"), 71);
 | 
| +  assertToStringEquals(
 | 
| +      "<def>ghi<klm>", res[36].firstMatch("abc<def>ghi<klm>nop"), 71);
 | 
|    assertToStringEquals("<def>", res[37].firstMatch("abc<def>ghi<klm>nop"), 72);
 | 
|    assertToStringEquals("<def>", res[37].firstMatch("abc<def>ghi<klm>nop"), 73);
 | 
|    assertNull(res[37].firstMatch("abc========def"), 74);
 | 
| @@ -1802,15 +1873,23 @@ void main() {
 | 
|    assertToStringEquals("abcd,a,d", res[58].firstMatch("abcd"), 151);
 | 
|    assertToStringEquals("abcd,a,d", res[58].firstMatch("abcdC2"), 152);
 | 
|    assertToStringEquals("abcd,a,d", res[58].firstMatch("abcdC5"), 153);
 | 
| -  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].firstMatch("abcdefghijklmnopqrstuvwxyz"), 154);
 | 
| -  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].firstMatch("abcdefghijklmnopqrstuvwxyzC1"), 155);
 | 
| -  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].firstMatch("abcdefghijklmnopqrstuvwxyzG1"), 156);
 | 
| -  assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].firstMatch("abcdefghijklmnopqrstuvwxyz"), 157);
 | 
| -  assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1"), 158);
 | 
| -  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].firstMatch("abcdefghijklmnopqrstuvwxyz"), 159);
 | 
| -  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1L"), 160);
 | 
| +  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
 | 
| +      res[59].firstMatch("abcdefghijklmnopqrstuvwxyz"), 154);
 | 
| +  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
 | 
| +      res[59].firstMatch("abcdefghijklmnopqrstuvwxyzC1"), 155);
 | 
| +  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
 | 
| +      res[59].firstMatch("abcdefghijklmnopqrstuvwxyzG1"), 156);
 | 
| +  assertToStringEquals("abcdefghijklmno,abcdefghijklmno",
 | 
| +      res[60].firstMatch("abcdefghijklmnopqrstuvwxyz"), 157);
 | 
| +  assertToStringEquals("abcdefghijklmno,abcdefghijklmno",
 | 
| +      res[60].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1"), 158);
 | 
| +  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop",
 | 
| +      res[61].firstMatch("abcdefghijklmnopqrstuvwxyz"), 159);
 | 
| +  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop",
 | 
| +      res[61].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1L"), 160);
 | 
|    assertToStringEquals("adef,a,,f", res[62].firstMatch("adefG1G2G3G4L"), 161);
 | 
| -  assertToStringEquals("bcdef,bc,bc,f", res[62].firstMatch("bcdefG1G2G3G4L"), 162);
 | 
| +  assertToStringEquals(
 | 
| +      "bcdef,bc,bc,f", res[62].firstMatch("bcdefG1G2G3G4L"), 162);
 | 
|    assertToStringEquals("adef,a,,f", res[62].firstMatch("adefghijkC0"), 163);
 | 
|    assertToStringEquals("abc\x00def", res[63].firstMatch("abc\x00defLC0"), 164);
 | 
|    assertToStringEquals("iss", res[69].firstMatch("Mississippi"), 165);
 | 
| @@ -1838,13 +1917,20 @@ void main() {
 | 
|    assertToStringEquals("", res[116].firstMatch("Nab-c"), 191);
 | 
|    assertToStringEquals("", res[116].firstMatch("*** Failers"), 192);
 | 
|    assertToStringEquals("", res[116].firstMatch("Nabc"), 193);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzz"), 194);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO0"), 195);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO1"), 196);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO2"), 197);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO3"), 198);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO4"), 199);
 | 
| -  assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO5"), 200);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzz"), 194);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO0"), 195);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO1"), 196);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO2"), 197);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO3"), 198);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO4"), 199);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO5"), 200);
 | 
|    assertToStringEquals("(abcd", res[118].firstMatch("(abcd)"), 201);
 | 
|    assertToStringEquals("(abcd", res[118].firstMatch("(abcd)xyz"), 202);
 | 
|    assertNull(res[118].firstMatch("xyz(abcd)"), 203);
 | 
| @@ -1873,7 +1959,8 @@ void main() {
 | 
|    assertNull(res[118].firstMatch("(ab(xy)cd)"), 226);
 | 
|    assertNull(res[118].firstMatch("(123ab(xy)cd)"), 227);
 | 
|    assertNull(res[118].firstMatch("(ab(xy)cd)"), 228);
 | 
| -  assertToStringEquals("(abcd", res[118].firstMatch("(abcd(xyz<p>qrs)123)"), 229);
 | 
| +  assertToStringEquals(
 | 
| +      "(abcd", res[118].firstMatch("(abcd(xyz<p>qrs)123)"), 229);
 | 
|    assertNull(res[118].firstMatch("(ab(cd)ef)"), 230);
 | 
|    assertNull(res[118].firstMatch("(ab(cd(ef)gh)ij)"), 231);
 | 
|    assertNull(res[146].firstMatch("A"), 232);
 | 
| @@ -1888,7 +1975,8 @@ void main() {
 | 
|    assertThrows(() => new RegExp(r"[\200-\110]"), 241);
 | 
|    // TODO(jgruber): Reintegrate stack-overflow2_test.dart once it passes.
 | 
|    assertToStringEquals("mainmain,main,", res[151].firstMatch("mainmain"), 243);
 | 
| -  assertToStringEquals("mainOmain,main,", res[151].firstMatch("mainOmain"), 244);
 | 
| +  assertToStringEquals(
 | 
| +      "mainOmain,main,", res[151].firstMatch("mainOmain"), 244);
 | 
|    assertToStringEquals("aba,a,", res[153].firstMatch("aba"), 245);
 | 
|    assertToStringEquals("aabbaa,aa,", res[154].firstMatch("aabbaa"), 246);
 | 
|    assertToStringEquals("aabbaa,aa,", res[155].firstMatch("aabbaa"), 247);
 | 
| @@ -1916,9 +2004,14 @@ void main() {
 | 
|    assertNull(res[172].firstMatch("\\"), 268);
 | 
|    assertNull(res[177].firstMatch("*** Failers"), 269);
 | 
|    assertNull(res[177].firstMatch("xxxxx"), 270);
 | 
| -  assertNull(res[177].firstMatch("now is the time for all good men to come to the aid of the party"), 271);
 | 
| +  assertNull(
 | 
| +      res[177].firstMatch(
 | 
| +          "now is the time for all good men to come to the aid of the party"),
 | 
| +      271);
 | 
|    assertNull(res[177].firstMatch("*** Failers"), 272);
 | 
| -  assertNull(res[177].firstMatch("this is not a line with only words and spaces!"), 273);
 | 
| +  assertNull(
 | 
| +      res[177].firstMatch("this is not a line with only words and spaces!"),
 | 
| +      273);
 | 
|    assertNull(res[177].firstMatch("12345a"), 274);
 | 
|    assertNull(res[177].firstMatch("*** Failers"), 275);
 | 
|    assertNull(res[177].firstMatch("12345+"), 276);
 | 
| @@ -1929,7 +2022,9 @@ void main() {
 | 
|    assertNull(res[177].firstMatch("(abc)"), 281);
 | 
|    assertNull(res[177].firstMatch("(abc(def)xyz)"), 282);
 | 
|    assertNull(res[177].firstMatch("*** Failers"), 283);
 | 
| -  assertNull(res[177].firstMatch("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 284);
 | 
| +  assertNull(
 | 
| +      res[177].firstMatch("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      284);
 | 
|    assertNull(res[177].firstMatch("xaaaab"), 285);
 | 
|    assertNull(res[177].firstMatch("xaaaab"), 286);
 | 
|    assertThrows(() => new RegExp(r"["), 287);
 | 
| @@ -1985,8 +2080,10 @@ void main() {
 | 
|    assertNull(res[215].firstMatch("*** Failers)"), 337);
 | 
|    assertToStringEquals("c", res[215].firstMatch("a(b(c)d"), 338);
 | 
|    assertNull(res[215].firstMatch("1221"), 339);
 | 
| -  assertToStringEquals("c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 340);
 | 
| -  assertToStringEquals("c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 341);
 | 
| +  assertToStringEquals(
 | 
| +      "c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 340);
 | 
| +  assertToStringEquals(
 | 
| +      "c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 341);
 | 
|    assertNull(res[215].firstMatch("Able was I ere I saw Elba."), 342);
 | 
|    assertNull(res[215].firstMatch("*** Failers"), 343);
 | 
|    assertToStringEquals("c", res[215].firstMatch("The quick brown fox"), 344);
 | 
| @@ -2018,8 +2115,10 @@ void main() {
 | 
|    assertNull(res[215].firstMatch("abde"), 370);
 | 
|    assertToStringEquals("c", res[215].firstMatch("acde"), 371);
 | 
|    assertNull(res[215].firstMatch("1221"), 372);
 | 
| -  assertToStringEquals("c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 373);
 | 
| -  assertToStringEquals("c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 374);
 | 
| +  assertToStringEquals(
 | 
| +      "c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 373);
 | 
| +  assertToStringEquals(
 | 
| +      "c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 374);
 | 
|    assertNull(res[215].firstMatch("Able was I ere I saw Elba."), 375);
 | 
|    assertNull(res[215].firstMatch("*** Failers"), 376);
 | 
|    assertToStringEquals("c", res[215].firstMatch("The quick brown fox"), 377);
 | 
| @@ -2034,10 +2133,18 @@ void main() {
 | 
|    assertNull(res[228].firstMatch("[]"), 386);
 | 
|    assertNull(res[228].firstMatch("[10,20,30,5,5,4,4,2,43,23,4234]"), 387);
 | 
|    assertNull(res[228].firstMatch("[]"), 388);
 | 
| -  assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[229].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 389);
 | 
| -  assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[230].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 390);
 | 
| -  assertNull(res[238].firstMatch("Note: that { does NOT introduce a quantifier"), 391);
 | 
| -  assertToStringEquals("aacaacaacaacaac123,aac", res[239].firstMatch("aacaacaacaacaac123"), 392);
 | 
| +  assertToStringEquals(
 | 
| +      " Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,",
 | 
| +      res[229].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"),
 | 
| +      389);
 | 
| +  assertToStringEquals(
 | 
| +      " Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,",
 | 
| +      res[230].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"),
 | 
| +      390);
 | 
| +  assertNull(
 | 
| +      res[238].firstMatch("Note: that { does NOT introduce a quantifier"), 391);
 | 
| +  assertToStringEquals(
 | 
| +      "aacaacaacaacaac123,aac", res[239].firstMatch("aacaacaacaacaac123"), 392);
 | 
|    assertNull(res[243].firstMatch("abP"), 393);
 | 
|    assertNull(res[243].firstMatch("abcP"), 394);
 | 
|    assertNull(res[243].firstMatch("abcdP"), 395);
 | 
| @@ -2093,15 +2200,30 @@ void main() {
 | 
|    assertNull(res[249].firstMatch("abc"), 445);
 | 
|    assertNull(res[249].firstMatch("** Failers"), 446);
 | 
|    assertNull(res[249].firstMatch("def"), 447);
 | 
| -  assertNull(res[249].firstMatch("<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>"), 448);
 | 
| -  assertToStringEquals("line\nbreak", res[251].firstMatch("this is a line\nbreak"), 449);
 | 
| -  assertToStringEquals("line\nbreak", res[251].firstMatch("line one\nthis is a line\nbreak in the second line"), 450);
 | 
| -  assertToStringEquals("line\nbreak", res[252].firstMatch("this is a line\nbreak"), 451);
 | 
| +  assertNull(
 | 
| +      res[249].firstMatch(
 | 
| +          "<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>"),
 | 
| +      448);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[251].firstMatch("this is a line\nbreak"), 449);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[251].firstMatch("line one\nthis is a line\nbreak in the second line"),
 | 
| +      450);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[252].firstMatch("this is a line\nbreak"), 451);
 | 
|    assertNull(res[252].firstMatch("** Failers"), 452);
 | 
| -  assertToStringEquals("line\nbreak", res[252].firstMatch("line one\nthis is a line\nbreak in the second line"), 453);
 | 
| -  assertToStringEquals("line\nbreak", res[253].firstMatch("this is a line\nbreak"), 454);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[252].firstMatch("line one\nthis is a line\nbreak in the second line"),
 | 
| +      453);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[253].firstMatch("this is a line\nbreak"), 454);
 | 
|    assertNull(res[253].firstMatch("** Failers"), 455);
 | 
| -  assertToStringEquals("line\nbreak", res[253].firstMatch("line one\nthis is a line\nbreak in the second line"), 456);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[253].firstMatch("line one\nthis is a line\nbreak in the second line"),
 | 
| +      456);
 | 
|    assertToStringEquals("ab-cd", res[254].firstMatch("ab-cd"), 457);
 | 
|    assertToStringEquals("ab=cd", res[254].firstMatch("ab=cd"), 458);
 | 
|    assertNull(res[254].firstMatch("** Failers"), 459);
 | 
| @@ -2117,8 +2239,14 @@ void main() {
 | 
|    assertNull(res[255].firstMatch("abcdefghijklAkB"), 468);
 | 
|    assertNull(res[255].firstMatch("abcdefghijklAkB"), 469);
 | 
|    assertNull(res[255].firstMatch("abcdefghijklAkB"), 470);
 | 
| -  assertNull(res[255].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 471);
 | 
| -  assertNull(res[255].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 472);
 | 
| +  assertNull(
 | 
| +      res[255].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      471);
 | 
| +  assertNull(
 | 
| +      res[255].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      472);
 | 
|    assertNull(res[255].firstMatch("(this(and)that"), 473);
 | 
|    assertNull(res[255].firstMatch("(this(and)that)"), 474);
 | 
|    assertNull(res[255].firstMatch("(this(and)that)stuff"), 475);
 | 
| @@ -2167,7 +2295,8 @@ void main() {
 | 
|    assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d<cr>"), 518);
 | 
|    assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0dpqr<cr>"), 519);
 | 
|    assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d\n<crlf>"), 520);
 | 
| -  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d\npqr<crlf>"), 521);
 | 
| +  assertToStringEquals(
 | 
| +      "abc", res[261].firstMatch("xyzabc\x0d\npqr<crlf>"), 521);
 | 
|    assertNull(res[261].firstMatch("** Failers"), 522);
 | 
|    assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d"), 523);
 | 
|    assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0dpqr"), 524);
 | 
| @@ -2194,12 +2323,17 @@ void main() {
 | 
|    assertToStringEquals("<cr>abc", res[267].firstMatch("<cr>abc\x0ddef"), 545);
 | 
|    assertToStringEquals("<cr>abc", res[267].firstMatch("<cr>abc\x0d\ndef"), 546);
 | 
|    assertToStringEquals("<crlf>abc", res[267].firstMatch("<crlf>abc\ndef"), 547);
 | 
| -  assertToStringEquals("<crlf>abc", res[267].firstMatch("<crlf>abc\x0ddef"), 548);
 | 
| -  assertToStringEquals("<crlf>abc", res[267].firstMatch("<crlf>abc\x0d\ndef"), 549);
 | 
| +  assertToStringEquals(
 | 
| +      "<crlf>abc", res[267].firstMatch("<crlf>abc\x0ddef"), 548);
 | 
| +  assertToStringEquals(
 | 
| +      "<crlf>abc", res[267].firstMatch("<crlf>abc\x0d\ndef"), 549);
 | 
|    assertNull(res[268].firstMatch("abc\ndef"), 550);
 | 
|    assertNull(res[268].firstMatch("abc\x0ddef"), 551);
 | 
|    assertNull(res[268].firstMatch("abc\x0d\ndef"), 552);
 | 
| -  assertToStringEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].firstMatch("XYO400"), 553);
 | 
| +  assertToStringEquals(
 | 
| +      "XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y",
 | 
| +      res[269].firstMatch("XYO400"),
 | 
| +      553);
 | 
|    assertToStringEquals("aaaA5", res[278].firstMatch("aaaA5"), 554);
 | 
|    assertNull(res[278].firstMatch("** Failers"), 555);
 | 
|    assertNull(res[278].firstMatch("aaaa5"), 556);
 | 
| @@ -2264,8 +2398,16 @@ void main() {
 | 
|    assertNull(res[356].firstMatch("a\x0db<any>"), 615);
 | 
|    assertToStringEquals("a\x85b", res[356].firstMatch("a\x85b<any> "), 616);
 | 
|    assertNull(res[356].firstMatch("a\x0db<anycrlf>"), 617);
 | 
| -  assertToStringEquals("abc1", res[357].firstMatch("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618);
 | 
| -  assertToStringEquals("abc1", res[358].firstMatch("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[357].firstMatch(
 | 
| +          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"),
 | 
| +      618);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[358].firstMatch(
 | 
| +          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"),
 | 
| +      619);
 | 
|    assertNull(res[361].firstMatch("a\nb"), 620);
 | 
|    assertNull(res[361].firstMatch("a\x0db"), 621);
 | 
|    assertNull(res[361].firstMatch("a\x0d\nb"), 622);
 | 
| @@ -2351,7 +2493,11 @@ void main() {
 | 
|    assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 702);
 | 
|    assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 703);
 | 
|    assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 704);
 | 
| -  assertToStringEquals("abc1", res[378].firstMatch("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[378].firstMatch(
 | 
| +          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"),
 | 
| +      705);
 | 
|    assertToStringEquals("X", res[379].firstMatch("XABC"), 706);
 | 
|    assertNull(res[379].firstMatch("** Failers "), 707);
 | 
|    assertToStringEquals("X", res[379].firstMatch("XABCB"), 708);
 | 
| @@ -2607,11 +2753,15 @@ void main() {
 | 
|    assertNull(res[464].firstMatch("ac\ncb "), 958);
 | 
|    assertToStringEquals("a\xc0,,\xc0", res[465].firstMatch("a\xc0\x88b"), 959);
 | 
|    assertToStringEquals("ax,,x", res[466].firstMatch("ax{100}b"), 960);
 | 
| -  assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[467].firstMatch("a\xc0\x88b"), 961);
 | 
| -  assertToStringEquals("ax{100}b,x{100},b", res[468].firstMatch("ax{100}b"), 962);
 | 
| -  assertToStringEquals("a\xc0\x92,\xc0,\x92", res[469].firstMatch("a\xc0\x92bcd"), 963);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x88b,\xc0\x88,b", res[467].firstMatch("a\xc0\x88b"), 961);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{100}b,x{100},b", res[468].firstMatch("ax{100}b"), 962);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x92,\xc0,\x92", res[469].firstMatch("a\xc0\x92bcd"), 963);
 | 
|    assertToStringEquals("ax{,x,{", res[470].firstMatch("ax{240}bcd"), 964);
 | 
| -  assertToStringEquals("a\xc0\x92,\xc0,\x92", res[471].firstMatch("a\xc0\x92bcd"), 965);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x92,\xc0,\x92", res[471].firstMatch("a\xc0\x92bcd"), 965);
 | 
|    assertToStringEquals("ax{,x,{", res[472].firstMatch("ax{240}bcd"), 966);
 | 
|    assertToStringEquals("a\xc0,,\xc0", res[473].firstMatch("a\xc0\x92bcd"), 967);
 | 
|    assertToStringEquals("ax,,x", res[474].firstMatch("ax{240}bcd"), 968);
 | 
| @@ -2621,37 +2771,59 @@ void main() {
 | 
|    assertNull(res[475].firstMatch("*** Failers"), 972);
 | 
|    assertNull(res[475].firstMatch("ax{1234}b "), 973);
 | 
|    assertNull(res[475].firstMatch("ac\ncb "), 974);
 | 
| -  assertToStringEquals("ax{1234}xyb,x{1234}xy", res[476].firstMatch("ax{1234}xyb "), 975);
 | 
| -  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].firstMatch("ax{1234}x{4321}yb "), 976);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].firstMatch("ax{1234}x{4321}x{3412}b "), 977);
 | 
| -  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].firstMatch("axxxxbcdefghijb "), 978);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 979);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}xyb,x{1234}xy", res[476].firstMatch("ax{1234}xyb "), 975);
 | 
| +  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
 | 
| +      res[476].firstMatch("ax{1234}x{4321}yb "), 976);
 | 
| +  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
 | 
| +      res[476].firstMatch("ax{1234}x{4321}x{3412}b "), 977);
 | 
| +  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij",
 | 
| +      res[476].firstMatch("axxxxbcdefghijb "), 978);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
 | 
| +      res[476].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
 | 
| +      979);
 | 
|    assertNull(res[476].firstMatch("*** Failers"), 980);
 | 
| -  assertToStringEquals("ax{1234}b,x{1234}", res[476].firstMatch("ax{1234}b "), 981);
 | 
| -  assertToStringEquals("ax{1234}xyb,x{1234}xy", res[477].firstMatch("ax{1234}xyb "), 982);
 | 
| -  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].firstMatch("ax{1234}x{4321}yb "), 983);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].firstMatch("ax{1234}x{4321}x{3412}b "), 984);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[477].firstMatch("axxxxbcdefghijb "), 985);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 986);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}b,x{1234}", res[476].firstMatch("ax{1234}b "), 981);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}xyb,x{1234}xy", res[477].firstMatch("ax{1234}xyb "), 982);
 | 
| +  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
 | 
| +      res[477].firstMatch("ax{1234}x{4321}yb "), 983);
 | 
| +  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
 | 
| +      res[477].firstMatch("ax{1234}x{4321}x{3412}b "), 984);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[477].firstMatch("axxxxbcdefghijb "), 985);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
 | 
| +      res[477].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
 | 
| +      986);
 | 
|    assertNull(res[477].firstMatch("*** Failers"), 987);
 | 
| -  assertToStringEquals("ax{1234}b,x{1234}", res[477].firstMatch("ax{1234}b "), 988);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}b,x{1234}", res[477].firstMatch("ax{1234}b "), 988);
 | 
|    assertNull(res[478].firstMatch("ax{1234}xyb "), 989);
 | 
|    assertNull(res[478].firstMatch("ax{1234}x{4321}yb "), 990);
 | 
|    assertNull(res[478].firstMatch("ax{1234}x{4321}x{3412}b "), 991);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[478].firstMatch("axxxxbcdefghijb "), 992);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[478].firstMatch("axxxxbcdefghijb "), 992);
 | 
|    assertNull(res[478].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 993);
 | 
| -  assertToStringEquals("axbxxb,xbxx", res[478].firstMatch("axbxxbcdefghijb "), 994);
 | 
| -  assertToStringEquals("axxxxxb,xxxxx", res[478].firstMatch("axxxxxbcdefghijb "), 995);
 | 
| +  assertToStringEquals(
 | 
| +      "axbxxb,xbxx", res[478].firstMatch("axbxxbcdefghijb "), 994);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxxb,xxxxx", res[478].firstMatch("axxxxxbcdefghijb "), 995);
 | 
|    assertNull(res[478].firstMatch("*** Failers"), 996);
 | 
|    assertNull(res[478].firstMatch("ax{1234}b "), 997);
 | 
|    assertNull(res[478].firstMatch("axxxxxxbcdefghijb "), 998);
 | 
|    assertNull(res[479].firstMatch("ax{1234}xyb "), 999);
 | 
|    assertNull(res[479].firstMatch("ax{1234}x{4321}yb "), 1000);
 | 
|    assertNull(res[479].firstMatch("ax{1234}x{4321}x{3412}b "), 1001);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[479].firstMatch("axxxxbcdefghijb "), 1002);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[479].firstMatch("axxxxbcdefghijb "), 1002);
 | 
|    assertNull(res[479].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 1003);
 | 
| -  assertToStringEquals("axbxxb,xbxx", res[479].firstMatch("axbxxbcdefghijb "), 1004);
 | 
| -  assertToStringEquals("axxxxxb,xxxxx", res[479].firstMatch("axxxxxbcdefghijb "), 1005);
 | 
| +  assertToStringEquals(
 | 
| +      "axbxxb,xbxx", res[479].firstMatch("axbxxbcdefghijb "), 1004);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxxb,xxxxx", res[479].firstMatch("axxxxxbcdefghijb "), 1005);
 | 
|    assertNull(res[479].firstMatch("*** Failers"), 1006);
 | 
|    assertNull(res[479].firstMatch("ax{1234}b "), 1007);
 | 
|    assertNull(res[479].firstMatch("axxxxxxbcdefghijb "), 1008);
 | 
| @@ -2696,16 +2868,23 @@ void main() {
 | 
|    assertNull(res[493].firstMatch("abcd"), 1049);
 | 
|    assertToStringEquals("x{", res[493].firstMatch("x{100}x{100} "), 1050);
 | 
|    assertToStringEquals("x{", res[493].firstMatch("x{100}x{100} "), 1051);
 | 
| -  assertToStringEquals("x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1052);
 | 
| +  assertToStringEquals(
 | 
| +      "x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1052);
 | 
|    assertNull(res[493].firstMatch("abce"), 1053);
 | 
| -  assertToStringEquals("x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1054);
 | 
| +  assertToStringEquals(
 | 
| +      "x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1054);
 | 
|    assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1055);
 | 
|    assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1056);
 | 
|    assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1057);
 | 
|    assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}XX"), 1058);
 | 
| -  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"), 1059);
 | 
| -  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"), 1060);
 | 
| -  assertToStringEquals("Xy", res[493].firstMatch("Xyyyax{100}x{100}bXzzz"), 1061);
 | 
| +  assertNull(
 | 
| +      res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
 | 
| +      1059);
 | 
| +  assertNull(
 | 
| +      res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
 | 
| +      1060);
 | 
| +  assertToStringEquals(
 | 
| +      "Xy", res[493].firstMatch("Xyyyax{100}x{100}bXzzz"), 1061);
 | 
|    assertToStringEquals("X", res[496].firstMatch("1X2"), 1062);
 | 
|    assertToStringEquals("x", res[496].firstMatch("1x{100}2 "), 1063);
 | 
|    assertToStringEquals(">X", res[497].firstMatch("> >X Y"), 1064);
 | 
| @@ -2847,16 +3026,26 @@ void main() {
 | 
|    assertToStringEquals("Ax", res[530].firstMatch("Ax{a3}BC"), 1200);
 | 
|    assertToStringEquals("}=", res[531].firstMatch("+x{a3}== "), 1201);
 | 
|    assertToStringEquals("}=", res[532].firstMatch("+x{a3}== "), 1202);
 | 
| -  assertToStringEquals("x", res[533].firstMatch("x{442}x{435}x{441}x{442}"), 1203);
 | 
| -  assertToStringEquals("x", res[534].firstMatch("x{442}x{435}x{441}x{442}"), 1204);
 | 
| -  assertToStringEquals("x", res[535].firstMatch("x{442}x{435}x{441}x{442}"), 1205);
 | 
| -  assertToStringEquals("x", res[536].firstMatch("x{442}x{435}x{441}x{442}"), 1206);
 | 
| -  assertToStringEquals("{", res[537].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1207);
 | 
| -  assertToStringEquals("{", res[538].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1208);
 | 
| -  assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].firstMatch("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209);
 | 
| -  assertToStringEquals("x{442}x{435}x{441}x{442}", res[539].firstMatch("x{442}x{435}x{441}x{442}"), 1210);
 | 
| -  assertToStringEquals("c d", res[540].firstMatch("abc defx{442}x{443}xyz\npqr"), 1211);
 | 
| -  assertToStringEquals("c d", res[541].firstMatch("abc defx{442}x{443}xyz\npqr"), 1212);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[533].firstMatch("x{442}x{435}x{441}x{442}"), 1203);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[534].firstMatch("x{442}x{435}x{441}x{442}"), 1204);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[535].firstMatch("x{442}x{435}x{441}x{442}"), 1205);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[536].firstMatch("x{442}x{435}x{441}x{442}"), 1206);
 | 
| +  assertToStringEquals(
 | 
| +      "{", res[537].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1207);
 | 
| +  assertToStringEquals(
 | 
| +      "{", res[538].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1208);
 | 
| +  assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ",
 | 
| +      res[539].firstMatch("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209);
 | 
| +  assertToStringEquals("x{442}x{435}x{441}x{442}",
 | 
| +      res[539].firstMatch("x{442}x{435}x{441}x{442}"), 1210);
 | 
| +  assertToStringEquals(
 | 
| +      "c d", res[540].firstMatch("abc defx{442}x{443}xyz\npqr"), 1211);
 | 
| +  assertToStringEquals(
 | 
| +      "c d", res[541].firstMatch("abc defx{442}x{443}xyz\npqr"), 1212);
 | 
|    assertNull(res[542].firstMatch("+x{2442}"), 1213);
 | 
|    assertNull(res[543].firstMatch("+x{2442}"), 1214);
 | 
|    assertNull(res[544].firstMatch("Ax{442}"), 1215);
 | 
| @@ -2879,8 +3068,10 @@ void main() {
 | 
|    assertNull(res[562].firstMatch("x{0041}x{2262}x{0391}x{002e}"), 1232);
 | 
|    assertNull(res[562].firstMatch("x{D55c}x{ad6d}x{C5B4} "), 1233);
 | 
|    assertNull(res[562].firstMatch("x{65e5}x{672c}x{8a9e}"), 1234);
 | 
| -  assertToStringEquals("{861}X", res[563].firstMatch("x{212ab}x{212ab}x{212ab}x{861}X"), 1235);
 | 
| -  assertToStringEquals("x{2", res[564].firstMatch("x{212ab}x{212ab}x{212ab}x{861}"), 1236);
 | 
| +  assertToStringEquals(
 | 
| +      "{861}X", res[563].firstMatch("x{212ab}x{212ab}x{212ab}x{861}X"), 1235);
 | 
| +  assertToStringEquals(
 | 
| +      "x{2", res[564].firstMatch("x{212ab}x{212ab}x{212ab}x{861}"), 1236);
 | 
|    assertToStringEquals("x{c", res[564].firstMatch("x{c0}b"), 1237);
 | 
|    assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1238);
 | 
|    assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1239);
 | 
| @@ -2889,7 +3080,8 @@ void main() {
 | 
|    assertToStringEquals("ax{", res[564].firstMatch("ax{c0}ax{c0}aaa/ "), 1242);
 | 
|    assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1243);
 | 
|    assertToStringEquals("ax{", res[564].firstMatch("ax{c0}ax{c0}aaa/ "), 1244);
 | 
| -  assertToStringEquals("Sho", res[564].firstMatch("Should produce an error diagnostic"), 1245);
 | 
| +  assertToStringEquals(
 | 
| +      "Sho", res[564].firstMatch("Should produce an error diagnostic"), 1245);
 | 
|    assertNull(res[565].firstMatch("Xx{1234}"), 1246);
 | 
|    assertNull(res[565].firstMatch("X\nabc "), 1247);
 | 
|    assertToStringEquals("b", res[566].firstMatch("bar"), 1248);
 | 
| @@ -2935,18 +3127,24 @@ void main() {
 | 
|    assertToStringEquals("\u0100", res[568].firstMatch("\u0100 "), 1288);
 | 
|    assertToStringEquals("\xff", res[569].firstMatch(">\xff<"), 1289);
 | 
|    assertNull(res[570].firstMatch(">x{ff}<"), 1290);
 | 
| -  assertToStringEquals("\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1291);
 | 
| +  assertToStringEquals(
 | 
| +      "\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1291);
 | 
|    assertToStringEquals("x", res[572].firstMatch("x{d6}"), 1292);
 | 
| -  assertToStringEquals("\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1293);
 | 
| +  assertToStringEquals(
 | 
| +      "\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1293);
 | 
|    assertToStringEquals("x", res[572].firstMatch("x{d6}"), 1294);
 | 
| -  assertToStringEquals("\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1295);
 | 
| +  assertToStringEquals(
 | 
| +      "\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1295);
 | 
|    assertToStringEquals("x", res[572].firstMatch("x{d6} "), 1296);
 | 
| -  assertToStringEquals("\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1297);
 | 
| +  assertToStringEquals(
 | 
| +      "\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1297);
 | 
|    assertToStringEquals("x", res[572].firstMatch("x{d6} "), 1298);
 | 
|    assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd]"), 1299);
 | 
|    assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd"), 1300);
 | 
| -  assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd"), 1301);
 | 
| -  assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd?"), 1302);
 | 
| +  assertToStringEquals(
 | 
| +      "\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd"), 1301);
 | 
| +  assertToStringEquals(
 | 
| +      "\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd?"), 1302);
 | 
|    assertNull(res[573].firstMatch("\xc0\x80"), 1303);
 | 
|    assertNull(res[573].firstMatch("\xc1\x8f "), 1304);
 | 
|    assertNull(res[573].firstMatch("\xe0\x9f\x80"), 1305);
 | 
| @@ -2973,8 +3171,16 @@ void main() {
 | 
|    assertToStringEquals("x", res[575].firstMatch("x{100}X   "), 1326);
 | 
|    assertToStringEquals("a", res[575].firstMatch("ax{1234}b"), 1327);
 | 
|    assertNull(res[577].firstMatch("AxxB     "), 1328);
 | 
| -  assertToStringEquals("abc1", res[578].firstMatch("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329);
 | 
| -  assertToStringEquals("abc1", res[579].firstMatch("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[578].firstMatch(
 | 
| +          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"),
 | 
| +      1329);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[579].firstMatch(
 | 
| +          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"),
 | 
| +      1330);
 | 
|    assertNull(res[580].firstMatch("a\nb"), 1331);
 | 
|    assertNull(res[580].firstMatch("a\x0db"), 1332);
 | 
|    assertNull(res[580].firstMatch("a\x0d\nb"), 1333);
 | 
| @@ -3028,14 +3234,20 @@ void main() {
 | 
|    assertNull(res[586].firstMatch("Xx{180e}Xx{85}"), 1381);
 | 
|    assertNull(res[586].firstMatch("** Failers"), 1382);
 | 
|    assertNull(res[586].firstMatch("x{2009} X\n   "), 1383);
 | 
| -  assertNull(res[587].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"), 1384);
 | 
| -  assertNull(res[587].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 1385);
 | 
| +  assertNull(
 | 
| +      res[587].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"),
 | 
| +      1384);
 | 
| +  assertNull(
 | 
| +      res[587].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 1385);
 | 
|    assertNull(res[587].firstMatch("\x09 x{202f}\n\x0b\x0c"), 1386);
 | 
|    assertNull(res[587].firstMatch("** Failers "), 1387);
 | 
|    assertNull(res[587].firstMatch("\x09x{200a}x{a0}x{2028}\x0b"), 1388);
 | 
|    assertNull(res[587].firstMatch(" "), 1389);
 | 
|    assertNull(res[588].firstMatch(">x{1680}"), 1390);
 | 
| -  assertNull(res[589].firstMatch(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<"), 1391);
 | 
| +  assertNull(
 | 
| +      res[589].firstMatch(
 | 
| +          ">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<"),
 | 
| +      1391);
 | 
|    assertToStringEquals("x{1ec5} ", res[593].firstMatch("x{1ec5} "), 1392);
 | 
|    assertNull(res[594].firstMatch("x{0}x{d7ff}x{e000}x{10ffff}"), 1393);
 | 
|    assertNull(res[594].firstMatch("x{d800}"), 1394);
 | 
| @@ -3078,7 +3290,8 @@ void main() {
 | 
|    assertNull(res[598].firstMatch("** Failers "), 1431);
 | 
|    assertNull(res[598].firstMatch("ax{85}b<bsr_anycrlf>"), 1432);
 | 
|    assertNull(res[598].firstMatch("a\x0bb<bsr_anycrlf>"), 1433);
 | 
| -  assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].firstMatch("QQQx{2029}ABCaXYZ=!bPQR"), 1434);
 | 
| +  assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR",
 | 
| +      res[599].firstMatch("QQQx{2029}ABCaXYZ=!bPQR"), 1434);
 | 
|    assertNull(res[599].firstMatch("** Failers"), 1435);
 | 
|    assertNull(res[599].firstMatch("ax{2029}b"), 1436);
 | 
|    assertNull(res[599].firstMatch("a\xe2\x80\xa9b "), 1437);
 | 
| @@ -3087,13 +3300,15 @@ void main() {
 | 
|    assertNull(res[600].firstMatch("** Failers"), 1440);
 | 
|    assertNull(res[600].firstMatch("ab  "), 1441);
 | 
|    assertToStringEquals("aXb", res[601].firstMatch("aXb"), 1442);
 | 
| -  assertToStringEquals("a\nX\nXx{1234}b", res[601].firstMatch("a\nX\nXx{1234}b "), 1443);
 | 
| +  assertToStringEquals(
 | 
| +      "a\nX\nXx{1234}b", res[601].firstMatch("a\nX\nXx{1234}b "), 1443);
 | 
|    assertNull(res[601].firstMatch("** Failers"), 1444);
 | 
|    assertNull(res[601].firstMatch("ab  "), 1445);
 | 
|    assertNull(res[601].firstMatch("x{de}x{de}"), 1446);
 | 
|    assertNull(res[601].firstMatch("x{123} "), 1447);
 | 
|    assertToStringEquals("X", res[602].firstMatch("Ax{1ec5}ABCXYZ"), 1448);
 | 
| -  assertNull(res[604].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 1449);
 | 
| +  assertNull(
 | 
| +      res[604].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 1449);
 | 
|    assertNull(res[604].firstMatch("\npx{300}9!\$ < "), 1450);
 | 
|    assertNull(res[604].firstMatch("** Failers "), 1451);
 | 
|    assertNull(res[604].firstMatch("apx{300}9!\$ < "), 1452);
 | 
| @@ -3172,9 +3387,18 @@ void main() {
 | 
|    assertNull(res[624].firstMatch("** Failers"), 1525);
 | 
|    assertNull(res[624].firstMatch("X"), 1526);
 | 
|    assertNull(res[624].firstMatch("x{903}"), 1527);
 | 
| -  assertNull(res[624].firstMatch("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"), 1528);
 | 
| -  assertNull(res[624].firstMatch("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"), 1529);
 | 
| -  assertNull(res[624].firstMatch("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"), 1530);
 | 
| +  assertNull(
 | 
| +      res[624].firstMatch(
 | 
| +          "0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"),
 | 
| +      1528);
 | 
| +  assertNull(
 | 
| +      res[624].firstMatch(
 | 
| +          "x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"),
 | 
| +      1529);
 | 
| +  assertNull(
 | 
| +      res[624].firstMatch(
 | 
| +          "x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"),
 | 
| +      1530);
 | 
|    assertNull(res[624].firstMatch("** Failers"), 1531);
 | 
|    assertNull(res[624].firstMatch("X"), 1532);
 | 
|    assertNull(res[625].firstMatch("x{16ee}"), 1533);
 | 
| @@ -3314,17 +3538,51 @@ void main() {
 | 
|    assertToStringEquals("d", res[656].firstMatch("abcd"), 1667);
 | 
|    assertNull(res[656].firstMatch("** Failers"), 1668);
 | 
|    assertNull(res[656].firstMatch("1234"), 1669);
 | 
| -  assertNull(res[657].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 1670);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671);
 | 
| +  assertNull(
 | 
| +      res[657].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      1670);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[657].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      1671);
 | 
|    assertToStringEquals(" ", res[657].firstMatch(" "), 1672);
 | 
| -  assertNull(res[657].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 1673);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674);
 | 
| -  assertNull(res[658].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 1675);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676);
 | 
| -  assertNull(res[659].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 1677);
 | 
| -  assertNull(res[659].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1678);
 | 
| -  assertNull(res[660].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 1679);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680);
 | 
| +  assertNull(
 | 
| +      res[657].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      1673);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[657].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      1674);
 | 
| +  assertNull(
 | 
| +      res[658].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      1675);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[658].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      1676);
 | 
| +  assertNull(
 | 
| +      res[659].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      1677);
 | 
| +  assertNull(
 | 
| +      res[659].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      1678);
 | 
| +  assertNull(
 | 
| +      res[660].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      1679);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[660].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      1680);
 | 
|    assertNull(res[661].firstMatch("a"), 1681);
 | 
|    assertNull(res[661].firstMatch("A "), 1682);
 | 
|    assertNull(res[662].firstMatch("a"), 1683);
 | 
| @@ -3402,20 +3660,26 @@ void main() {
 | 
|    assertNull(res[669].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1755);
 | 
|    assertNull(res[670].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1756);
 | 
|    assertNull(res[670].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1757);
 | 
| -  assertToStringEquals("A,,A", res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758);
 | 
| -  assertToStringEquals("A,,A", res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759);
 | 
| -  assertToStringEquals("A,,A", res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760);
 | 
| -  assertToStringEquals("A,,A", res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761);
 | 
| +  assertToStringEquals(
 | 
| +      "A,,A", res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759);
 | 
| +  assertToStringEquals(
 | 
| +      "A,,A", res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761);
 | 
|    assertNull(res[673].firstMatch("*** Failers"), 1762);
 | 
|    assertNull(res[673].firstMatch("Ax{300}x{301}x{302}"), 1763);
 | 
|    assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}X"), 1764);
 | 
|    assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 1765);
 | 
|    assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 1766);
 | 
| -  assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1767);
 | 
| +  assertNull(
 | 
| +      res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1767);
 | 
|    assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}X"), 1768);
 | 
|    assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 1769);
 | 
|    assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 1770);
 | 
| -  assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1771);
 | 
| +  assertNull(
 | 
| +      res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1771);
 | 
|    assertNull(res[675].firstMatch("x{2e81}x{3007}x{2f804}x{31a0}"), 1772);
 | 
|    assertNull(res[675].firstMatch("** Failers"), 1773);
 | 
|    assertNull(res[675].firstMatch("x{2e7f}  "), 1774);
 | 
| @@ -3635,7 +3899,10 @@ void main() {
 | 
|    assertNull(res[731].firstMatch("x{2028}x{2028}x{2028}"), 1988);
 | 
|    assertNull(res[732].firstMatch("x{c0}x{e0}x{116}x{117}"), 1989);
 | 
|    assertNull(res[732].firstMatch("x{c0}x{e0}x{116}x{117}"), 1990);
 | 
| -  assertNull(res[733].firstMatch("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="), 1991);
 | 
| +  assertNull(
 | 
| +      res[733].firstMatch(
 | 
| +          "x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="),
 | 
| +      1991);
 | 
|    assertNull(res[733].firstMatch("x{a77d}x{1d79}"), 1992);
 | 
|    assertNull(res[733].firstMatch("x{1d79}x{a77d} "), 1993);
 | 
|    assertNull(res[733].firstMatch("x{a77d}x{1d79}"), 1994);
 | 
| @@ -3663,9 +3930,12 @@ void main() {
 | 
|    assertNull(res[738].firstMatch("ac"), 2016);
 | 
|    assertNull(res[738].firstMatch("ab"), 2017);
 | 
|    assertToStringEquals("a", res[739].firstMatch("a"), 2018);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaa", res[739].firstMatch("aaaaaaaaaaaaaaaaa"), 2019);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaa", res[739].firstMatch("aaaaaaaaaaaaaaaaa"), 2019);
 | 
| +  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020);
 | 
| +  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021);
 | 
|    assertToStringEquals("a,a", res[740].firstMatch("a"), 2022);
 | 
|    assertToStringEquals("a,a", res[740].firstMatch("abcd"), 2023);
 | 
|    assertToStringEquals("a,a", res[740].firstMatch("african"), 2024);
 | 
| @@ -3871,11 +4141,13 @@ void main() {
 | 
|    assertNull(res[782].firstMatch("abcd1234"), 2224);
 | 
|    assertNull(res[782].firstMatch("ee45"), 2225);
 | 
|    assertToStringEquals("abc4,abc", res[783].firstMatch("abc45"), 2226);
 | 
| -  assertToStringEquals("abcabcabc4,abc", res[783].firstMatch("abcabcabc45"), 2227);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabc4,abc", res[783].firstMatch("abcabcabc45"), 2227);
 | 
|    assertToStringEquals("4,", res[783].firstMatch("42xyz "), 2228);
 | 
|    assertNull(res[783].firstMatch("*** Failers"), 2229);
 | 
|    assertToStringEquals("abc4,abc", res[784].firstMatch("abc45"), 2230);
 | 
| -  assertToStringEquals("abcabcabc4,abc", res[784].firstMatch("abcabcabc45"), 2231);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabc4,abc", res[784].firstMatch("abcabcabc45"), 2231);
 | 
|    assertNull(res[784].firstMatch("*** Failers"), 2232);
 | 
|    assertNull(res[784].firstMatch("42xyz "), 2233);
 | 
|    assertToStringEquals("abc4,abc", res[785].firstMatch("abc45"), 2234);
 | 
| @@ -3883,7 +4155,8 @@ void main() {
 | 
|    assertNull(res[785].firstMatch("*** Failers"), 2236);
 | 
|    assertNull(res[785].firstMatch("abcabcabc45"), 2237);
 | 
|    assertToStringEquals("abcabc4,abc", res[786].firstMatch("abcabc45"), 2238);
 | 
| -  assertToStringEquals("abcabcabc4,abc", res[786].firstMatch("abcabcabc45"), 2239);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabc4,abc", res[786].firstMatch("abcabcabc45"), 2239);
 | 
|    assertNull(res[786].firstMatch("*** Failers"), 2240);
 | 
|    assertNull(res[786].firstMatch("abcabcabcabc45"), 2241);
 | 
|    assertNull(res[786].firstMatch("abc45"), 2242);
 | 
| @@ -3900,9 +4173,15 @@ void main() {
 | 
|    assertNull(res[787].firstMatch(">abc>123<xyz<"), 2253);
 | 
|    assertNull(res[787].firstMatch(">abc>1(2)3<xyz<"), 2254);
 | 
|    assertNull(res[787].firstMatch(">abc>(1(2)3)<xyz<"), 2255);
 | 
| -  assertNull(res[787].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876"), 2256);
 | 
| +  assertNull(
 | 
| +      res[787].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876"),
 | 
| +      2256);
 | 
|    assertNull(res[787].firstMatch("*** Failers "), 2257);
 | 
| -  assertNull(res[787].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 2258);
 | 
| +  assertNull(
 | 
| +      res[787].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      2258);
 | 
|    assertNull(res[787].firstMatch("<>"), 2259);
 | 
|    assertNull(res[787].firstMatch("<abcd>"), 2260);
 | 
|    assertNull(res[787].firstMatch("<abc <123> hij>"), 2261);
 | 
| @@ -3982,58 +4261,100 @@ void main() {
 | 
|    assertNull(res[797].firstMatch("aaa23P "), 2335);
 | 
|    assertNull(res[797].firstMatch("aaaa12345P"), 2336);
 | 
|    assertToStringEquals("aa0z", res[797].firstMatch("aa0zP"), 2337);
 | 
| -  assertToStringEquals("aaaa4444444444444z", res[797].firstMatch("aaaa4444444444444zP "), 2338);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaa4444444444444z", res[797].firstMatch("aaaa4444444444444zP "), 2338);
 | 
|    assertNull(res[797].firstMatch("*** Failers"), 2339);
 | 
|    assertNull(res[797].firstMatch("azP "), 2340);
 | 
|    assertNull(res[797].firstMatch("aaaaaP "), 2341);
 | 
|    assertNull(res[797].firstMatch("a56P "), 2342);
 | 
| -  assertNull(res[799].firstMatch("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ"), 2343);
 | 
| -  assertNull(res[799].firstMatch("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ"), 2344);
 | 
| +  assertNull(
 | 
| +      res[799].firstMatch("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ"),
 | 
| +      2343);
 | 
| +  assertNull(
 | 
| +      res[799].firstMatch("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ"), 2344);
 | 
|    assertNull(res[799].firstMatch("cdabbbbbbbbPRBZ"), 2345);
 | 
|    assertNull(res[799].firstMatch("efabbbbbbbbbbbbbbbbPRBZ"), 2346);
 | 
|    assertNull(res[799].firstMatch("bbbbbbbbbbbbcdXyasdfadfPRBZ    "), 2347);
 | 
|    assertNull(res[799].firstMatch("abc"), 2348);
 | 
|    assertNull(res[799].firstMatch("** Failers"), 2349);
 | 
|    assertNull(res[799].firstMatch("def  "), 2350);
 | 
| -  assertToStringEquals("the quick brown fox", res[800].firstMatch("the quick brown fox"), 2351);
 | 
| +  assertToStringEquals(
 | 
| +      "the quick brown fox", res[800].firstMatch("the quick brown fox"), 2351);
 | 
|    assertNull(res[800].firstMatch("The quick brown FOX"), 2352);
 | 
| -  assertToStringEquals("the quick brown fox", res[800].firstMatch("What do you know about the quick brown fox?"), 2353);
 | 
| -  assertNull(res[800].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2354);
 | 
| -  assertToStringEquals("the quick brown fox", res[801].firstMatch("the quick brown fox"), 2355);
 | 
| -  assertToStringEquals("The quick brown FOX", res[801].firstMatch("The quick brown FOX"), 2356);
 | 
| -  assertToStringEquals("the quick brown fox", res[801].firstMatch("What do you know about the quick brown fox?"), 2357);
 | 
| -  assertToStringEquals("THE QUICK BROWN FOX", res[801].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2358);
 | 
| -  assertToStringEquals("abcd\x09\n\x0d\x0cae9;\$\\?caxyz", res[802].firstMatch("abcd\x09\n\x0d\x0cae9;\$\\?caxyz"), 2359);
 | 
| -  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2360);
 | 
| -  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2361);
 | 
| -  assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aabxyzpqrrrabbxyyyypqAzz"), 2362);
 | 
| -  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaabxyzpqrrrabbxyyyypqAzz"), 2363);
 | 
| -  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaaabxyzpqrrrabbxyyyypqAzz"), 2364);
 | 
| -  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("abcxyzpqrrrabbxyyyypqAzz"), 2365);
 | 
| -  assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aabcxyzpqrrrabbxyyyypqAzz"), 2366);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypAzz"), 2367);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqAzz"), 2368);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373);
 | 
| -  assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374);
 | 
| -  assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].firstMatch("abxyzzpqrrrabbxyyyypqAzz"), 2375);
 | 
| -  assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aabxyzzzpqrrrabbxyyyypqAzz"), 2376);
 | 
| -  assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377);
 | 
| -  assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378);
 | 
| -  assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].firstMatch("abcxyzzpqrrrabbxyyyypqAzz"), 2379);
 | 
| -  assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380);
 | 
| -  assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381);
 | 
| -  assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].firstMatch("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382);
 | 
| -  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383);
 | 
| -  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABzz"), 2385);
 | 
| -  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABBzz"), 2386);
 | 
| -  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].firstMatch(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387);
 | 
| -  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].firstMatch(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388);
 | 
| -  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].firstMatch(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389);
 | 
| +  assertToStringEquals("the quick brown fox",
 | 
| +      res[800].firstMatch("What do you know about the quick brown fox?"), 2353);
 | 
| +  assertNull(
 | 
| +      res[800].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2354);
 | 
| +  assertToStringEquals(
 | 
| +      "the quick brown fox", res[801].firstMatch("the quick brown fox"), 2355);
 | 
| +  assertToStringEquals(
 | 
| +      "The quick brown FOX", res[801].firstMatch("The quick brown FOX"), 2356);
 | 
| +  assertToStringEquals("the quick brown fox",
 | 
| +      res[801].firstMatch("What do you know about the quick brown fox?"), 2357);
 | 
| +  assertToStringEquals("THE QUICK BROWN FOX",
 | 
| +      res[801].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2358);
 | 
| +  assertToStringEquals("abcd\x09\n\x0d\x0cae9;\$\\?caxyz",
 | 
| +      res[802].firstMatch("abcd\x09\n\x0d\x0cae9;\$\\?caxyz"), 2359);
 | 
| +  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2360);
 | 
| +  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2361);
 | 
| +  assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aabxyzpqrrrabbxyyyypqAzz"), 2362);
 | 
| +  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaabxyzpqrrrabbxyyyypqAzz"), 2363);
 | 
| +  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabxyzpqrrrabbxyyyypqAzz"), 2364);
 | 
| +  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("abcxyzpqrrrabbxyyyypqAzz"), 2365);
 | 
| +  assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aabcxyzpqrrrabbxyyyypqAzz"), 2366);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypAzz"), 2367);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqAzz"), 2368);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373);
 | 
| +  assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374);
 | 
| +  assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("abxyzzpqrrrabbxyyyypqAzz"), 2375);
 | 
| +  assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aabxyzzzpqrrrabbxyyyypqAzz"), 2376);
 | 
| +  assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377);
 | 
| +  assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378);
 | 
| +  assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("abcxyzzpqrrrabbxyyyypqAzz"), 2379);
 | 
| +  assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380);
 | 
| +  assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381);
 | 
| +  assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382);
 | 
| +  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383);
 | 
| +  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz",
 | 
| +      res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABzz"), 2385);
 | 
| +  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz",
 | 
| +      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABBzz"), 2386);
 | 
| +  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387);
 | 
| +  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388);
 | 
| +  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz",
 | 
| +      res[803].firstMatch(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389);
 | 
|    assertNull(res[803].firstMatch("*** Failers"), 2390);
 | 
|    assertNull(res[803].firstMatch("abxyzpqrrabbxyyyypqAzz"), 2391);
 | 
|    assertNull(res[803].firstMatch("abxyzpqrrrrabbxyyyypqAzz"), 2392);
 | 
| @@ -4053,8 +4374,10 @@ void main() {
 | 
|    assertToStringEquals("bac,a", res[805].firstMatch("bac"), 2406);
 | 
|    assertToStringEquals("bbac,a", res[805].firstMatch("bbac"), 2407);
 | 
|    assertToStringEquals("aac,a", res[805].firstMatch("aac"), 2408);
 | 
| -  assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].firstMatch("abbbbbbbbbbbc"), 2409);
 | 
| -  assertToStringEquals("bbbbbbbbbbbac,a", res[805].firstMatch("bbbbbbbbbbbac"), 2410);
 | 
| +  assertToStringEquals(
 | 
| +      "abbbbbbbbbbbc,bbbbbbbbbbb", res[805].firstMatch("abbbbbbbbbbbc"), 2409);
 | 
| +  assertToStringEquals(
 | 
| +      "bbbbbbbbbbbac,a", res[805].firstMatch("bbbbbbbbbbbac"), 2410);
 | 
|    assertNull(res[805].firstMatch("*** Failers"), 2411);
 | 
|    assertNull(res[805].firstMatch("aaac"), 2412);
 | 
|    assertNull(res[805].firstMatch("abbbbbbbbbbbac"), 2413);
 | 
| @@ -4064,8 +4387,10 @@ void main() {
 | 
|    assertToStringEquals("bac,a", res[806].firstMatch("bac"), 2417);
 | 
|    assertToStringEquals("bbac,a", res[806].firstMatch("bbac"), 2418);
 | 
|    assertToStringEquals("aac,a", res[806].firstMatch("aac"), 2419);
 | 
| -  assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].firstMatch("abbbbbbbbbbbc"), 2420);
 | 
| -  assertToStringEquals("bbbbbbbbbbbac,a", res[806].firstMatch("bbbbbbbbbbbac"), 2421);
 | 
| +  assertToStringEquals(
 | 
| +      "abbbbbbbbbbbc,bbbbbbbbbbb", res[806].firstMatch("abbbbbbbbbbbc"), 2420);
 | 
| +  assertToStringEquals(
 | 
| +      "bbbbbbbbbbbac,a", res[806].firstMatch("bbbbbbbbbbbac"), 2421);
 | 
|    assertNull(res[806].firstMatch("*** Failers"), 2422);
 | 
|    assertNull(res[806].firstMatch("aaac"), 2423);
 | 
|    assertNull(res[806].firstMatch("abbbbbbbbbbbac"), 2424);
 | 
| @@ -4153,20 +4478,23 @@ void main() {
 | 
|    assertNull(res[817].firstMatch("*** Failers"), 2506);
 | 
|    assertNull(res[817].firstMatch("123"), 2507);
 | 
|    assertToStringEquals("x1234", res[817].firstMatch("x1234"), 2508);
 | 
| -  assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].firstMatch("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509);
 | 
| +  assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr",
 | 
| +      res[818].firstMatch("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509);
 | 
|    assertNull(res[818].firstMatch("*** Failers"), 2510);
 | 
|    assertNull(res[818].firstMatch("!pqr=apquxz.ixr.zzz.ac.uk"), 2511);
 | 
|    assertNull(res[818].firstMatch("abc!=apquxz.ixr.zzz.ac.uk"), 2512);
 | 
|    assertNull(res[818].firstMatch("abc!pqr=apquxz:ixr.zzz.ac.uk"), 2513);
 | 
|    assertNull(res[818].firstMatch("abc!pqr=apquxz.ixr.zzz.ac.ukk"), 2514);
 | 
| -  assertToStringEquals(":", res[819].firstMatch("Well, we need a colon: somewhere"), 2515);
 | 
| +  assertToStringEquals(
 | 
| +      ":", res[819].firstMatch("Well, we need a colon: somewhere"), 2515);
 | 
|    assertNull(res[819].firstMatch("*** Fail if we don't"), 2516);
 | 
|    assertToStringEquals("0abc,0abc", res[820].firstMatch("0abc"), 2517);
 | 
|    assertToStringEquals("abc,abc", res[820].firstMatch("abc"), 2518);
 | 
|    assertToStringEquals("fed,fed", res[820].firstMatch("fed"), 2519);
 | 
|    assertToStringEquals("E,E", res[820].firstMatch("E"), 2520);
 | 
|    assertToStringEquals("::,::", res[820].firstMatch("::"), 2521);
 | 
| -  assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].firstMatch("5f03:12C0::932e"), 2522);
 | 
| +  assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e",
 | 
| +      res[820].firstMatch("5f03:12C0::932e"), 2522);
 | 
|    assertToStringEquals("def,def", res[820].firstMatch("fed def"), 2523);
 | 
|    assertToStringEquals("ff,ff", res[820].firstMatch("Any old stuff"), 2524);
 | 
|    assertNull(res[820].firstMatch("*** Failers"), 2525);
 | 
| @@ -4175,27 +4503,36 @@ void main() {
 | 
|    assertNull(res[820].firstMatch("fed "), 2528);
 | 
|    assertNull(res[820].firstMatch("Any old rubbish"), 2529);
 | 
|    assertToStringEquals(".1.2.3,1,2,3", res[821].firstMatch(".1.2.3"), 2530);
 | 
| -  assertToStringEquals("A.12.123.0,12,123,0", res[821].firstMatch("A.12.123.0"), 2531);
 | 
| +  assertToStringEquals(
 | 
| +      "A.12.123.0,12,123,0", res[821].firstMatch("A.12.123.0"), 2531);
 | 
|    assertNull(res[821].firstMatch("*** Failers"), 2532);
 | 
|    assertNull(res[821].firstMatch(".1.2.3333"), 2533);
 | 
|    assertNull(res[821].firstMatch("1.2.3"), 2534);
 | 
|    assertNull(res[821].firstMatch("1234.2.3"), 2535);
 | 
| -  assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].firstMatch("1 IN SOA non-sp1 non-sp2("), 2536);
 | 
| -  assertToStringEquals("1    IN    SOA    non-sp1    non-sp2   (,1,non-sp1,non-sp2", res[822].firstMatch("1    IN    SOA    non-sp1    non-sp2   ("), 2537);
 | 
| +  assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2",
 | 
| +      res[822].firstMatch("1 IN SOA non-sp1 non-sp2("), 2536);
 | 
| +  assertToStringEquals(
 | 
| +      "1    IN    SOA    non-sp1    non-sp2   (,1,non-sp1,non-sp2",
 | 
| +      res[822].firstMatch("1    IN    SOA    non-sp1    non-sp2   ("),
 | 
| +      2537);
 | 
|    assertNull(res[822].firstMatch("*** Failers"), 2538);
 | 
|    assertNull(res[822].firstMatch("1IN SOA non-sp1 non-sp2("), 2539);
 | 
|    assertToStringEquals("a.,", res[823].firstMatch("a."), 2540);
 | 
|    assertToStringEquals("Z.,", res[823].firstMatch("Z."), 2541);
 | 
|    assertToStringEquals("2.,", res[823].firstMatch("2."), 2542);
 | 
| -  assertToStringEquals("ab-c.pq-r.,.pq-r", res[823].firstMatch("ab-c.pq-r."), 2543);
 | 
| -  assertToStringEquals("sxk.zzz.ac.uk.,.uk", res[823].firstMatch("sxk.zzz.ac.uk."), 2544);
 | 
| +  assertToStringEquals(
 | 
| +      "ab-c.pq-r.,.pq-r", res[823].firstMatch("ab-c.pq-r."), 2543);
 | 
| +  assertToStringEquals(
 | 
| +      "sxk.zzz.ac.uk.,.uk", res[823].firstMatch("sxk.zzz.ac.uk."), 2544);
 | 
|    assertToStringEquals("x-.y-.,.y-", res[823].firstMatch("x-.y-."), 2545);
 | 
|    assertNull(res[823].firstMatch("*** Failers"), 2546);
 | 
|    assertNull(res[823].firstMatch("-abc.peq."), 2547);
 | 
|    assertToStringEquals("*.a,,,", res[824].firstMatch("*.a"), 2548);
 | 
|    assertToStringEquals("*.b0-a,0-a,,", res[824].firstMatch("*.b0-a"), 2549);
 | 
| -  assertToStringEquals("*.c3-b.c,3-b,.c,", res[824].firstMatch("*.c3-b.c"), 2550);
 | 
| -  assertToStringEquals("*.c-a.b-c,-a,.b-c,-c", res[824].firstMatch("*.c-a.b-c"), 2551);
 | 
| +  assertToStringEquals(
 | 
| +      "*.c3-b.c,3-b,.c,", res[824].firstMatch("*.c3-b.c"), 2550);
 | 
| +  assertToStringEquals(
 | 
| +      "*.c-a.b-c,-a,.b-c,-c", res[824].firstMatch("*.c-a.b-c"), 2551);
 | 
|    assertNull(res[824].firstMatch("*** Failers"), 2552);
 | 
|    assertNull(res[824].firstMatch("*.0"), 2553);
 | 
|    assertNull(res[824].firstMatch("*.a-"), 2554);
 | 
| @@ -4206,10 +4543,12 @@ void main() {
 | 
|    assertToStringEquals("ab,abcd,cd,ab", res[827].firstMatch("abcd"), 2559);
 | 
|    assertToStringEquals("a.b.c.d,.d", res[828].firstMatch("a.b.c.d"), 2560);
 | 
|    assertToStringEquals("A.B.C.D,.D", res[828].firstMatch("A.B.C.D"), 2561);
 | 
| -  assertToStringEquals("a.b.c.1.2.3.C,.C", res[828].firstMatch("a.b.c.1.2.3.C"), 2562);
 | 
| +  assertToStringEquals(
 | 
| +      "a.b.c.1.2.3.C,.C", res[828].firstMatch("a.b.c.1.2.3.C"), 2562);
 | 
|    assertToStringEquals("\"1234\",", res[829].firstMatch("\"1234\""), 2563);
 | 
|    assertToStringEquals("\"abcd\" ;,;", res[829].firstMatch("\"abcd\" ;"), 2564);
 | 
| -  assertToStringEquals("\"\" ; rhubarb,; rhubarb", res[829].firstMatch("\"\" ; rhubarb"), 2565);
 | 
| +  assertToStringEquals(
 | 
| +      "\"\" ; rhubarb,; rhubarb", res[829].firstMatch("\"\" ; rhubarb"), 2565);
 | 
|    assertNull(res[829].firstMatch("*** Failers"), 2566);
 | 
|    assertNull(res[829].firstMatch("\"1234\" : things"), 2567);
 | 
|    assertNull(res[830].firstMatch("\\"), 2568);
 | 
| @@ -4227,8 +4566,10 @@ void main() {
 | 
|    assertNull(res[832].firstMatch("*** Failers"), 2580);
 | 
|    assertNull(res[832].firstMatch("abcd"), 2581);
 | 
|    assertNull(res[832].firstMatch("ab d"), 2582);
 | 
| -  assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].firstMatch("abcdefhijklm"), 2583);
 | 
| -  assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].firstMatch("abcdefhijklm"), 2584);
 | 
| +  assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m",
 | 
| +      res[833].firstMatch("abcdefhijklm"), 2583);
 | 
| +  assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m",
 | 
| +      res[834].firstMatch("abcdefhijklm"), 2584);
 | 
|    assertNull(res[835].firstMatch("a+ Z0+\x08\n\x1d\x12"), 2585);
 | 
|    assertNull(res[835].firstMatch(".^\$(*+)|{?,?}"), 2586);
 | 
|    assertToStringEquals("z", res[836].firstMatch("z"), 2587);
 | 
| @@ -4273,16 +4614,22 @@ void main() {
 | 
|    assertToStringEquals("1234", res[842].firstMatch("12345"), 2626);
 | 
|    assertToStringEquals("aaaa", res[842].firstMatch("aaaaa"), 2627);
 | 
|    assertToStringEquals("1234", res[842].firstMatch("123456"), 2628);
 | 
| -  assertToStringEquals("From abcd  Mon Sep 01 12:33,abcd", res[843].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2629);
 | 
| -  assertToStringEquals("From abcd  Mon Sep 01 12:33,Sep ", res[844].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2630);
 | 
| -  assertToStringEquals("From abcd  Mon Sep  1 12:33,Sep  ", res[844].firstMatch("From abcd  Mon Sep  1 12:33:02 1997"), 2631);
 | 
| +  assertToStringEquals("From abcd  Mon Sep 01 12:33,abcd",
 | 
| +      res[843].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2629);
 | 
| +  assertToStringEquals("From abcd  Mon Sep 01 12:33,Sep ",
 | 
| +      res[844].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2630);
 | 
| +  assertToStringEquals("From abcd  Mon Sep  1 12:33,Sep  ",
 | 
| +      res[844].firstMatch("From abcd  Mon Sep  1 12:33:02 1997"), 2631);
 | 
|    assertNull(res[844].firstMatch("*** Failers"), 2632);
 | 
|    assertNull(res[844].firstMatch("From abcd  Sep 01 12:33:02 1997"), 2633);
 | 
|    assertNull(res[845].firstMatch("12\n34"), 2634);
 | 
|    assertNull(res[845].firstMatch("12\x0d34"), 2635);
 | 
| -  assertToStringEquals("brown", res[846].firstMatch("the quick brown\x09 fox"), 2636);
 | 
| -  assertToStringEquals("foolish see?,lish see?", res[847].firstMatch("foobar is foolish see?"), 2637);
 | 
| -  assertToStringEquals("rowbar etc, etc", res[848].firstMatch("foobar crowbar etc"), 2638);
 | 
| +  assertToStringEquals(
 | 
| +      "brown", res[846].firstMatch("the quick brown\x09 fox"), 2636);
 | 
| +  assertToStringEquals("foolish see?,lish see?",
 | 
| +      res[847].firstMatch("foobar is foolish see?"), 2637);
 | 
| +  assertToStringEquals(
 | 
| +      "rowbar etc, etc", res[848].firstMatch("foobar crowbar etc"), 2638);
 | 
|    assertToStringEquals("barrel,rel", res[848].firstMatch("barrel"), 2639);
 | 
|    assertToStringEquals("2barrel,rel", res[848].firstMatch("2barrel"), 2640);
 | 
|    assertToStringEquals("A barrel,rel", res[848].firstMatch("A barrel"), 2641);
 | 
| @@ -4303,32 +4650,60 @@ void main() {
 | 
|    assertToStringEquals("aabbbbb,abbbbb", res[857].firstMatch("aabbbbb"), 2656);
 | 
|    assertToStringEquals("aa,a", res[858].firstMatch("aabbbbb"), 2657);
 | 
|    assertToStringEquals("aabb,b", res[859].firstMatch("aabbbbb"), 2658);
 | 
| -  assertToStringEquals("Alan Other <user@dom.ain>", res[860].firstMatch("Alan Other <user@dom.ain>"), 2659);
 | 
| -  assertToStringEquals("user@dom.ain", res[860].firstMatch("<user@dom.ain>"), 2660);
 | 
| -  assertToStringEquals("user@dom.ain", res[860].firstMatch("user@dom.ain"), 2661);
 | 
| -  assertToStringEquals("\"A. Other\" <user.1234@dom.ain> (a comment)", res[860].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2662);
 | 
| -  assertToStringEquals(" Other <user.1234@dom.ain> (a comment)", res[860].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2663);
 | 
| -  assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].firstMatch("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664);
 | 
| -  assertToStringEquals("user@some.where", res[860].firstMatch("A missing angle <user@some.where"), 2665);
 | 
| +  assertToStringEquals("Alan Other <user@dom.ain>",
 | 
| +      res[860].firstMatch("Alan Other <user@dom.ain>"), 2659);
 | 
| +  assertToStringEquals(
 | 
| +      "user@dom.ain", res[860].firstMatch("<user@dom.ain>"), 2660);
 | 
| +  assertToStringEquals(
 | 
| +      "user@dom.ain", res[860].firstMatch("user@dom.ain"), 2661);
 | 
| +  assertToStringEquals(
 | 
| +      "\"A. Other\" <user.1234@dom.ain> (a comment)",
 | 
| +      res[860].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"),
 | 
| +      2662);
 | 
| +  assertToStringEquals(" Other <user.1234@dom.ain> (a comment)",
 | 
| +      res[860].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2663);
 | 
| +  assertToStringEquals(
 | 
| +      "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay",
 | 
| +      res[860].firstMatch(
 | 
| +          "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"),
 | 
| +      2664);
 | 
| +  assertToStringEquals("user@some.where",
 | 
| +      res[860].firstMatch("A missing angle <user@some.where"), 2665);
 | 
|    assertNull(res[860].firstMatch("*** Failers"), 2666);
 | 
|    assertNull(res[860].firstMatch("The quick brown fox"), 2667);
 | 
| -  assertToStringEquals("Alan Other <user@dom.ain>", res[861].firstMatch("Alan Other <user@dom.ain>"), 2668);
 | 
| -  assertToStringEquals("user@dom.ain", res[861].firstMatch("<user@dom.ain>"), 2669);
 | 
| -  assertToStringEquals("user@dom.ain", res[861].firstMatch("user@dom.ain"), 2670);
 | 
| -  assertToStringEquals("\"A. Other\" <user.1234@dom.ain>", res[861].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2671);
 | 
| -  assertToStringEquals(" Other <user.1234@dom.ain>", res[861].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2672);
 | 
| -  assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].firstMatch("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673);
 | 
| -  assertToStringEquals("user@some.where", res[861].firstMatch("A missing angle <user@some.where"), 2674);
 | 
| +  assertToStringEquals("Alan Other <user@dom.ain>",
 | 
| +      res[861].firstMatch("Alan Other <user@dom.ain>"), 2668);
 | 
| +  assertToStringEquals(
 | 
| +      "user@dom.ain", res[861].firstMatch("<user@dom.ain>"), 2669);
 | 
| +  assertToStringEquals(
 | 
| +      "user@dom.ain", res[861].firstMatch("user@dom.ain"), 2670);
 | 
| +  assertToStringEquals(
 | 
| +      "\"A. Other\" <user.1234@dom.ain>",
 | 
| +      res[861].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"),
 | 
| +      2671);
 | 
| +  assertToStringEquals(" Other <user.1234@dom.ain>",
 | 
| +      res[861].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2672);
 | 
| +  assertToStringEquals(
 | 
| +      "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay",
 | 
| +      res[861].firstMatch(
 | 
| +          "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"),
 | 
| +      2673);
 | 
| +  assertToStringEquals("user@some.where",
 | 
| +      res[861].firstMatch("A missing angle <user@some.where"), 2674);
 | 
|    assertNull(res[861].firstMatch("*** Failers"), 2675);
 | 
|    assertNull(res[861].firstMatch("The quick brown fox"), 2676);
 | 
|    assertNull(res[861].firstMatch("abc\x00def\x00pqr\x00xyz\x000AB"), 2677);
 | 
| -  assertNull(res[861].firstMatch("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE"), 2678);
 | 
| -  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].firstMatch("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679);
 | 
| -  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].firstMatch("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680);
 | 
| +  assertNull(
 | 
| +      res[861].firstMatch("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE"), 2678);
 | 
| +  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB",
 | 
| +      res[862].firstMatch("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679);
 | 
| +  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB",
 | 
| +      res[862].firstMatch("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680);
 | 
|    assertToStringEquals("\x00", res[863].firstMatch("\x00A"), 2681);
 | 
|    assertToStringEquals("\x01", res[863].firstMatch("\x01B"), 2682);
 | 
|    assertToStringEquals("\x1f", res[863].firstMatch("\x1fC"), 2683);
 | 
| -  assertToStringEquals("\x00\x00\x00\x00", res[864].firstMatch("\x00\x00\x00\x00"), 2684);
 | 
| +  assertToStringEquals(
 | 
| +      "\x00\x00\x00\x00", res[864].firstMatch("\x00\x00\x00\x00"), 2684);
 | 
|    assertNull(res[865].firstMatch("The Ax0x0Z"), 2685);
 | 
|    assertNull(res[865].firstMatch("An A\x00x0\x00Z"), 2686);
 | 
|    assertNull(res[865].firstMatch("*** Failers"), 2687);
 | 
| @@ -4348,9 +4723,18 @@ void main() {
 | 
|    assertNull(res[868].firstMatch("*** Failers"), 2701);
 | 
|    assertNull(res[868].firstMatch("abc"), 2702);
 | 
|    assertNull(res[868].firstMatch("abbbbbc"), 2703);
 | 
| -  assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[869].firstMatch("track1.title:TBlah blah blah"), 2704);
 | 
| -  assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[870].firstMatch("track1.title:TBlah blah blah"), 2705);
 | 
| -  assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[871].firstMatch("track1.title:TBlah blah blah"), 2706);
 | 
| +  assertToStringEquals(
 | 
| +      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
 | 
| +      res[869].firstMatch("track1.title:TBlah blah blah"),
 | 
| +      2704);
 | 
| +  assertToStringEquals(
 | 
| +      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
 | 
| +      res[870].firstMatch("track1.title:TBlah blah blah"),
 | 
| +      2705);
 | 
| +  assertToStringEquals(
 | 
| +      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
 | 
| +      res[871].firstMatch("track1.title:TBlah blah blah"),
 | 
| +      2706);
 | 
|    assertToStringEquals("WXY_^abc", res[872].firstMatch("WXY_^abc"), 2707);
 | 
|    assertNull(res[872].firstMatch("*** Failers"), 2708);
 | 
|    assertNull(res[872].firstMatch("wxy"), 2709);
 | 
| @@ -4424,7 +4808,8 @@ void main() {
 | 
|    assertNull(res[899].firstMatch("abc\x0081"), 2777);
 | 
|    assertNull(res[900].firstMatch("abc\x0091"), 2778);
 | 
|    assertNull(res[900].firstMatch("abc\x0091"), 2779);
 | 
| -  assertToStringEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k", res[901].firstMatch("abcdefghijk\nS"), 2780);
 | 
| +  assertToStringEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k",
 | 
| +      res[901].firstMatch("abcdefghijk\nS"), 2780);
 | 
|    assertToStringEquals("abidef", res[902].firstMatch("abidef"), 2781);
 | 
|    assertToStringEquals("bc", res[903].firstMatch("bc"), 2782);
 | 
|    assertToStringEquals("xyz,,", res[904].firstMatch("xyz"), 2783);
 | 
| @@ -4432,11 +4817,15 @@ void main() {
 | 
|    assertToStringEquals("abc\x01de", res[906].firstMatch("abc\x01de"), 2785);
 | 
|    assertToStringEquals("abc\x01de,abc", res[907].firstMatch("abc\x01de"), 2786);
 | 
|    assertNull(res[907].firstMatch("a\nb"), 2787);
 | 
| -  assertToStringEquals("baNOTcccc,b,a,NOT,cccc", res[908].firstMatch("baNOTccccd"), 2788);
 | 
| -  assertToStringEquals("baNOTccc,b,a,NOT,ccc", res[908].firstMatch("baNOTcccd"), 2789);
 | 
| -  assertToStringEquals("baNOTcc,b,a,NO,Tcc", res[908].firstMatch("baNOTccd"), 2790);
 | 
| +  assertToStringEquals(
 | 
| +      "baNOTcccc,b,a,NOT,cccc", res[908].firstMatch("baNOTccccd"), 2788);
 | 
| +  assertToStringEquals(
 | 
| +      "baNOTccc,b,a,NOT,ccc", res[908].firstMatch("baNOTcccd"), 2789);
 | 
| +  assertToStringEquals(
 | 
| +      "baNOTcc,b,a,NO,Tcc", res[908].firstMatch("baNOTccd"), 2790);
 | 
|    assertToStringEquals("baccc,b,a,,ccc", res[908].firstMatch("bacccd"), 2791);
 | 
| -  assertToStringEquals("*** Failers,*,*,* Fail,ers", res[908].firstMatch("*** Failers"), 2792);
 | 
| +  assertToStringEquals(
 | 
| +      "*** Failers,*,*,* Fail,ers", res[908].firstMatch("*** Failers"), 2792);
 | 
|    assertNull(res[908].firstMatch("anything"), 2793);
 | 
|    assertNull(res[908].firstMatch("b\x08c   "), 2794);
 | 
|    assertNull(res[908].firstMatch("baccd"), 2795);
 | 
| @@ -4455,8 +4844,10 @@ void main() {
 | 
|    assertNull(res[915].firstMatch("abk"), 2808);
 | 
|    assertNull(res[915].firstMatch("akb"), 2809);
 | 
|    assertNull(res[915].firstMatch("akk "), 2810);
 | 
| -  assertToStringEquals("12345678@a.b.c.d", res[916].firstMatch("12345678@a.b.c.d"), 2811);
 | 
| -  assertToStringEquals("123456789@x.y.z", res[916].firstMatch("123456789@x.y.z"), 2812);
 | 
| +  assertToStringEquals(
 | 
| +      "12345678@a.b.c.d", res[916].firstMatch("12345678@a.b.c.d"), 2811);
 | 
| +  assertToStringEquals(
 | 
| +      "123456789@x.y.z", res[916].firstMatch("123456789@x.y.z"), 2812);
 | 
|    assertNull(res[916].firstMatch("*** Failers"), 2813);
 | 
|    assertNull(res[916].firstMatch("12345678@x.y.uk"), 2814);
 | 
|    assertNull(res[916].firstMatch("1234567@a.b.c.d       "), 2815);
 | 
| @@ -4468,29 +4859,47 @@ void main() {
 | 
|    assertToStringEquals("A", res[919].firstMatch("aaAabcd "), 2821);
 | 
|    assertToStringEquals("b", res[920].firstMatch("aaaabcd"), 2822);
 | 
|    assertToStringEquals("b", res[920].firstMatch("aaAabcd "), 2823);
 | 
| -  assertToStringEquals("PSTAIREISLL", res[922].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824);
 | 
| -  assertToStringEquals("PSTAIREISLL", res[923].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825);
 | 
| -  assertToStringEquals(".230003938,.23", res[924].firstMatch("1.230003938"), 2826);
 | 
| -  assertToStringEquals(".875000282,.875", res[924].firstMatch("1.875000282   "), 2827);
 | 
| +  assertToStringEquals("PSTAIREISLL",
 | 
| +      res[922].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824);
 | 
| +  assertToStringEquals("PSTAIREISLL",
 | 
| +      res[923].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825);
 | 
| +  assertToStringEquals(
 | 
| +      ".230003938,.23", res[924].firstMatch("1.230003938"), 2826);
 | 
| +  assertToStringEquals(
 | 
| +      ".875000282,.875", res[924].firstMatch("1.875000282   "), 2827);
 | 
|    assertToStringEquals(".235,.23", res[924].firstMatch("1.235  "), 2828);
 | 
|    assertNull(res[924].firstMatch("              "), 2829);
 | 
| -  assertToStringEquals(".23,.23,", res[925].firstMatch("1.230003938      "), 2830);
 | 
| +  assertToStringEquals(
 | 
| +      ".23,.23,", res[925].firstMatch("1.230003938      "), 2830);
 | 
|    assertToStringEquals(".875,.875,5", res[925].firstMatch("1.875000282"), 2831);
 | 
|    assertNull(res[925].firstMatch("*** Failers "), 2832);
 | 
|    assertNull(res[925].firstMatch("1.235 "), 2833);
 | 
|    assertThrows(() => new RegExp(r"a(?)b"), 2834);
 | 
|    assertNull(res[925].firstMatch("ab "), 2835);
 | 
| -  assertToStringEquals("foo table,foo,table", res[926].firstMatch("Food is on the foo table"), 2836);
 | 
| -  assertToStringEquals("food is under the bar in the bar,d is under the bar in the ", res[927].firstMatch("The food is under the bar in the barn."), 2837);
 | 
| -  assertToStringEquals("food is under the bar,d is under the ", res[928].firstMatch("The food is under the bar in the barn."), 2838);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,", res[929].firstMatch("I have 2 numbers: 53147"), 2839);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[930].firstMatch("I have 2 numbers: 53147"), 2840);
 | 
| -  assertToStringEquals(",,", res[931].firstMatch("I have 2 numbers: 53147"), 2841);
 | 
| -  assertToStringEquals("I have 2,I have ,2", res[932].firstMatch("I have 2 numbers: 53147"), 2842);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[933].firstMatch("I have 2 numbers: 53147"), 2843);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[934].firstMatch("I have 2 numbers: 53147"), 2844);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[935].firstMatch("I have 2 numbers: 53147"), 2845);
 | 
| -  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[936].firstMatch("I have 2 numbers: 53147"), 2846);
 | 
| +  assertToStringEquals("foo table,foo,table",
 | 
| +      res[926].firstMatch("Food is on the foo table"), 2836);
 | 
| +  assertToStringEquals(
 | 
| +      "food is under the bar in the bar,d is under the bar in the ",
 | 
| +      res[927].firstMatch("The food is under the bar in the barn."),
 | 
| +      2837);
 | 
| +  assertToStringEquals("food is under the bar,d is under the ",
 | 
| +      res[928].firstMatch("The food is under the bar in the barn."), 2838);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,",
 | 
| +      res[929].firstMatch("I have 2 numbers: 53147"), 2839);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7",
 | 
| +      res[930].firstMatch("I have 2 numbers: 53147"), 2840);
 | 
| +  assertToStringEquals(
 | 
| +      ",,", res[931].firstMatch("I have 2 numbers: 53147"), 2841);
 | 
| +  assertToStringEquals("I have 2,I have ,2",
 | 
| +      res[932].firstMatch("I have 2 numbers: 53147"), 2842);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7",
 | 
| +      res[933].firstMatch("I have 2 numbers: 53147"), 2843);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
 | 
| +      res[934].firstMatch("I have 2 numbers: 53147"), 2844);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
 | 
| +      res[935].firstMatch("I have 2 numbers: 53147"), 2845);
 | 
| +  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
 | 
| +      res[936].firstMatch("I have 2 numbers: 53147"), 2846);
 | 
|    assertToStringEquals("AB", res[937].firstMatch("ABC123"), 2847);
 | 
|    assertToStringEquals(" ", res[937].firstMatch(" "), 2848);
 | 
|    assertToStringEquals("ABC,ABC", res[938].firstMatch("ABC445"), 2849);
 | 
| @@ -4551,38 +4960,53 @@ void main() {
 | 
|    assertToStringEquals("aa,a", res[952].firstMatch("aab"), 2903);
 | 
|    assertToStringEquals("aaa,a", res[952].firstMatch("aaa"), 2904);
 | 
|    assertToStringEquals("aaaaaaaa,a", res[952].firstMatch("aaaaaaaa    "), 2905);
 | 
| -  assertToStringEquals("bib.gif", res[953].firstMatch("borfle\nbib.gif\nno"), 2906);
 | 
| -  assertToStringEquals("bib.gif", res[954].firstMatch("borfle\nbib.gif\nno"), 2907);
 | 
| -  assertToStringEquals("bib.gif", res[955].firstMatch("borfle\nbib.gif\nno"), 2908);
 | 
| -  assertToStringEquals("bib.gif", res[956].firstMatch("borfle\nbib.gif\nno"), 2909);
 | 
| -  assertToStringEquals("bib.gif", res[957].firstMatch("borfle\nbib.gif\nno"), 2910);
 | 
| +  assertToStringEquals(
 | 
| +      "bib.gif", res[953].firstMatch("borfle\nbib.gif\nno"), 2906);
 | 
| +  assertToStringEquals(
 | 
| +      "bib.gif", res[954].firstMatch("borfle\nbib.gif\nno"), 2907);
 | 
| +  assertToStringEquals(
 | 
| +      "bib.gif", res[955].firstMatch("borfle\nbib.gif\nno"), 2908);
 | 
| +  assertToStringEquals(
 | 
| +      "bib.gif", res[956].firstMatch("borfle\nbib.gif\nno"), 2909);
 | 
| +  assertToStringEquals(
 | 
| +      "bib.gif", res[957].firstMatch("borfle\nbib.gif\nno"), 2910);
 | 
|    assertToStringEquals("no", res[958].firstMatch("borfle\nbib.gif\nno"), 2911);
 | 
| -  assertToStringEquals("borfle", res[959].firstMatch("borfle\nbib.gif\nno"), 2912);
 | 
| +  assertToStringEquals(
 | 
| +      "borfle", res[959].firstMatch("borfle\nbib.gif\nno"), 2912);
 | 
|    assertToStringEquals("no", res[960].firstMatch("borfle\nbib.gif\nno"), 2913);
 | 
| -  assertToStringEquals("borfle", res[961].firstMatch("borfle\nbib.gif\nno"), 2914);
 | 
| +  assertToStringEquals(
 | 
| +      "borfle", res[961].firstMatch("borfle\nbib.gif\nno"), 2914);
 | 
|    assertToStringEquals("", res[962].firstMatch("borfle\nbib.gif\nno\n"), 2915);
 | 
| -  assertToStringEquals("borfle", res[963].firstMatch("borfle\nbib.gif\nno\n"), 2916);
 | 
| +  assertToStringEquals(
 | 
| +      "borfle", res[963].firstMatch("borfle\nbib.gif\nno\n"), 2916);
 | 
|    assertToStringEquals("", res[964].firstMatch("borfle\nbib.gif\nno\n"), 2917);
 | 
| -  assertToStringEquals("borfle", res[965].firstMatch("borfle\nbib.gif\nno\n"), 2918);
 | 
| -  assertToStringEquals("1234X,1234X", res[966].firstMatch("abcde\n1234Xyz"), 2919);
 | 
| +  assertToStringEquals(
 | 
| +      "borfle", res[965].firstMatch("borfle\nbib.gif\nno\n"), 2918);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[966].firstMatch("abcde\n1234Xyz"), 2919);
 | 
|    assertToStringEquals("B,B", res[966].firstMatch("BarFoo "), 2920);
 | 
|    assertNull(res[966].firstMatch("*** Failers"), 2921);
 | 
|    assertNull(res[966].firstMatch("abcde\nBar  "), 2922);
 | 
| -  assertToStringEquals("1234X,1234X", res[967].firstMatch("abcde\n1234Xyz"), 2923);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[967].firstMatch("abcde\n1234Xyz"), 2923);
 | 
|    assertToStringEquals("B,B", res[967].firstMatch("BarFoo "), 2924);
 | 
|    assertToStringEquals("B,B", res[967].firstMatch("abcde\nBar  "), 2925);
 | 
| -  assertToStringEquals("1234X,1234X", res[968].firstMatch("abcde\n1234Xyz"), 2926);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[968].firstMatch("abcde\n1234Xyz"), 2926);
 | 
|    assertToStringEquals("B,B", res[968].firstMatch("BarFoo "), 2927);
 | 
|    assertNull(res[968].firstMatch("*** Failers"), 2928);
 | 
|    assertNull(res[968].firstMatch("abcde\nBar  "), 2929);
 | 
| -  assertToStringEquals("1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2930);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2930);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2931);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2932);
 | 
| -  assertToStringEquals("1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2933);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2933);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2934);
 | 
|    assertNull(res[969].firstMatch("*** Failers "), 2935);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2936);
 | 
| -  assertToStringEquals("1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2937);
 | 
| +  assertToStringEquals(
 | 
| +      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2937);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2938);
 | 
|    assertNull(res[969].firstMatch("*** Failers "), 2939);
 | 
|    assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2940);
 | 
| @@ -4595,12 +5019,18 @@ void main() {
 | 
|    assertNull(res[970].firstMatch("abc\nB"), 2947);
 | 
|    assertNull(res[970].firstMatch("abc\nB"), 2948);
 | 
|    assertToStringEquals("B", res[970].firstMatch("B\n"), 2949);
 | 
| -  assertToStringEquals("123456654321", res[971].firstMatch("123456654321"), 2950);
 | 
| -  assertToStringEquals("123456654321", res[972].firstMatch("123456654321 "), 2951);
 | 
| -  assertToStringEquals("123456654321", res[973].firstMatch("123456654321"), 2952);
 | 
| -  assertToStringEquals("abcabcabcabc", res[974].firstMatch("abcabcabcabc"), 2953);
 | 
| -  assertToStringEquals("abcabcabcabc", res[975].firstMatch("abcabcabcabc"), 2954);
 | 
| -  assertToStringEquals("abcabcabcabc,c", res[976].firstMatch("abcabcabcabc "), 2955);
 | 
| +  assertToStringEquals(
 | 
| +      "123456654321", res[971].firstMatch("123456654321"), 2950);
 | 
| +  assertToStringEquals(
 | 
| +      "123456654321", res[972].firstMatch("123456654321 "), 2951);
 | 
| +  assertToStringEquals(
 | 
| +      "123456654321", res[973].firstMatch("123456654321"), 2952);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabcabc", res[974].firstMatch("abcabcabcabc"), 2953);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabcabc", res[975].firstMatch("abcabcabcabc"), 2954);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabcabc,c", res[976].firstMatch("abcabcabcabc "), 2955);
 | 
|    assertToStringEquals("n", res[977].firstMatch("n"), 2956);
 | 
|    assertNull(res[977].firstMatch("*** Failers "), 2957);
 | 
|    assertNull(res[977].firstMatch("z "), 2958);
 | 
| @@ -4621,8 +5051,10 @@ void main() {
 | 
|    assertToStringEquals("abe", res[982].firstMatch("abe"), 2973);
 | 
|    assertNull(res[982].firstMatch("*** Failers"), 2974);
 | 
|    assertNull(res[982].firstMatch("ab1e   "), 2975);
 | 
| -  assertToStringEquals("\"quick\",quick", res[983].firstMatch("the \"quick\" brown fox"), 2976);
 | 
| -  assertToStringEquals("\"the \\\"quick\\\" brown fox\", brown fox", res[983].firstMatch("\"the \\\"quick\\\" brown fox\" "), 2977);
 | 
| +  assertToStringEquals(
 | 
| +      "\"quick\",quick", res[983].firstMatch("the \"quick\" brown fox"), 2976);
 | 
| +  assertToStringEquals("\"the \\\"quick\\\" brown fox\", brown fox",
 | 
| +      res[983].firstMatch("\"the \\\"quick\\\" brown fox\" "), 2977);
 | 
|    assertToStringEquals("", res[984].firstMatch("abc"), 2978);
 | 
|    assertToStringEquals("", res[985].firstMatch("abc "), 2979);
 | 
|    assertToStringEquals("", res[986].firstMatch("abc "), 2980);
 | 
| @@ -4676,15 +5108,26 @@ void main() {
 | 
|    assertNull(res[998].firstMatch("qqq\nabc"), 3027);
 | 
|    assertNull(res[998].firstMatch("abc\nzzz"), 3028);
 | 
|    assertNull(res[998].firstMatch("qqq\nabc\nzzz"), 3029);
 | 
| -  assertNull(res[998].firstMatch("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/"), 3030);
 | 
| -  assertNull(res[998].firstMatch("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo"), 3031);
 | 
| +  assertNull(
 | 
| +      res[998].firstMatch(
 | 
| +          "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/"),
 | 
| +      3030);
 | 
| +  assertNull(
 | 
| +      res[998].firstMatch(
 | 
| +          "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo"),
 | 
| +      3031);
 | 
|    assertNull(res[998].firstMatch("1.230003938"), 3032);
 | 
|    assertNull(res[998].firstMatch("1.875000282"), 3033);
 | 
|    assertNull(res[998].firstMatch("*** Failers "), 3034);
 | 
|    assertNull(res[998].firstMatch("1.235 "), 3035);
 | 
| -  assertNull(res[998].firstMatch("now is the time for all good men to come to the aid of the party"), 3036);
 | 
| +  assertNull(
 | 
| +      res[998].firstMatch(
 | 
| +          "now is the time for all good men to come to the aid of the party"),
 | 
| +      3036);
 | 
|    assertNull(res[998].firstMatch("*** Failers"), 3037);
 | 
| -  assertNull(res[998].firstMatch("this is not a line with only words and spaces!"), 3038);
 | 
| +  assertNull(
 | 
| +      res[998].firstMatch("this is not a line with only words and spaces!"),
 | 
| +      3038);
 | 
|    assertToStringEquals("12345a,12345,a", res[999].firstMatch("12345a"), 3039);
 | 
|    assertToStringEquals("12345,1234,5", res[999].firstMatch("12345+ "), 3040);
 | 
|    assertToStringEquals("12345a,12345,a", res[999].firstMatch("12345a"), 3041);
 | 
| @@ -4695,8 +5138,10 @@ void main() {
 | 
|    assertNull(res[999].firstMatch("aaab"), 3046);
 | 
|    assertNull(res[999].firstMatch("aaabbbccc"), 3047);
 | 
|    assertNull(res[999].firstMatch("aaabbbbccccd"), 3048);
 | 
| -  assertToStringEquals("aaabbbbcccc,ccc", res[1000].firstMatch("aaabbbbccccd"), 3049);
 | 
| -  assertToStringEquals("abc,b", res[1000].firstMatch("((abc(ade)ufh()()x"), 3050);
 | 
| +  assertToStringEquals(
 | 
| +      "aaabbbbcccc,ccc", res[1000].firstMatch("aaabbbbccccd"), 3049);
 | 
| +  assertToStringEquals(
 | 
| +      "abc,b", res[1000].firstMatch("((abc(ade)ufh()()x"), 3050);
 | 
|    assertNull(res[1000].firstMatch(""), 3051);
 | 
|    assertToStringEquals("abc,b", res[1000].firstMatch("(abc)"), 3052);
 | 
|    assertToStringEquals("abc,b", res[1000].firstMatch("(abc(def)xyz)"), 3053);
 | 
| @@ -4807,7 +5252,8 @@ void main() {
 | 
|    assertNull(res[1000].firstMatch(""), 3158);
 | 
|    assertToStringEquals("abc,abc", res[1001].firstMatch("abc"), 3159);
 | 
|    assertToStringEquals("abcabc,abc", res[1001].firstMatch("abcabc"), 3160);
 | 
| -  assertToStringEquals("abcabcabc,abc", res[1001].firstMatch("abcabcabc"), 3161);
 | 
| +  assertToStringEquals(
 | 
| +      "abcabcabc,abc", res[1001].firstMatch("abcabcabc"), 3161);
 | 
|    assertToStringEquals(",", res[1001].firstMatch("xyz      "), 3162);
 | 
|    assertToStringEquals("a,a", res[1002].firstMatch("a"), 3163);
 | 
|    assertToStringEquals("aaaaa,aaaaa", res[1002].firstMatch("aaaaa "), 3164);
 | 
| @@ -4859,7 +5305,8 @@ void main() {
 | 
|    assertToStringEquals(",", res[1009].firstMatch("abcX"), 3210);
 | 
|    assertToStringEquals(",", res[1009].firstMatch("aBCX"), 3211);
 | 
|    assertToStringEquals(",", res[1009].firstMatch("bbX"), 3212);
 | 
| -  assertToStringEquals("BBX               , ", res[1009].firstMatch("BBX               "), 3213);
 | 
| +  assertToStringEquals(
 | 
| +      "BBX               , ", res[1009].firstMatch("BBX               "), 3213);
 | 
|    assertToStringEquals(",", res[1009].firstMatch("ac"), 3214);
 | 
|    assertToStringEquals(",", res[1009].firstMatch("aC"), 3215);
 | 
|    assertToStringEquals(",", res[1009].firstMatch("bD"), 3216);
 | 
| @@ -5046,12 +5493,14 @@ void main() {
 | 
|    assertNull(res[1107].firstMatch("*** Failers"), 3397);
 | 
|    assertNull(res[1107].firstMatch("effg"), 3398);
 | 
|    assertNull(res[1107].firstMatch("bcdd"), 3399);
 | 
| -  assertToStringEquals("a,a,a,a,a,a,a,a,a,a,a", res[1108].firstMatch("a"), 3400);
 | 
| +  assertToStringEquals(
 | 
| +      "a,a,a,a,a,a,a,a,a,a,a", res[1108].firstMatch("a"), 3400);
 | 
|    assertToStringEquals("a,a,a,a,a,a,a,a,a,a", res[1109].firstMatch("a"), 3401);
 | 
|    assertNull(res[1110].firstMatch("*** Failers"), 3402);
 | 
|    assertNull(res[1110].firstMatch("aa"), 3403);
 | 
|    assertNull(res[1110].firstMatch("uh-uh"), 3404);
 | 
| -  assertToStringEquals("multiple words", res[1111].firstMatch("multiple words, yeah"), 3405);
 | 
| +  assertToStringEquals(
 | 
| +      "multiple words", res[1111].firstMatch("multiple words, yeah"), 3405);
 | 
|    assertToStringEquals("abcde,ab,de", res[1112].firstMatch("abcde"), 3406);
 | 
|    assertToStringEquals("(a, b),a,b", res[1113].firstMatch("(a, b)"), 3407);
 | 
|    assertToStringEquals("abcd", res[1115].firstMatch("abcd"), 3408);
 | 
| @@ -5170,14 +5619,16 @@ void main() {
 | 
|    assertNull(res[1199].firstMatch("ADCDCDE"), 3521);
 | 
|    assertNull(res[1199].firstMatch("EFFG"), 3522);
 | 
|    assertNull(res[1199].firstMatch("BCDD"), 3523);
 | 
| -  assertToStringEquals("A,A,A,A,A,A,A,A,A,A,A", res[1200].firstMatch("A"), 3524);
 | 
| +  assertToStringEquals(
 | 
| +      "A,A,A,A,A,A,A,A,A,A,A", res[1200].firstMatch("A"), 3524);
 | 
|    assertToStringEquals("A,A,A,A,A,A,A,A,A,A", res[1201].firstMatch("A"), 3525);
 | 
|    assertToStringEquals("A,A", res[1202].firstMatch("A"), 3526);
 | 
|    assertToStringEquals("C,C", res[1203].firstMatch("C"), 3527);
 | 
|    assertNull(res[1204].firstMatch("*** Failers"), 3528);
 | 
|    assertNull(res[1204].firstMatch("AA"), 3529);
 | 
|    assertNull(res[1204].firstMatch("UH-UH"), 3530);
 | 
| -  assertToStringEquals("MULTIPLE WORDS", res[1205].firstMatch("MULTIPLE WORDS, YEAH"), 3531);
 | 
| +  assertToStringEquals(
 | 
| +      "MULTIPLE WORDS", res[1205].firstMatch("MULTIPLE WORDS, YEAH"), 3531);
 | 
|    assertToStringEquals("ABCDE,AB,DE", res[1206].firstMatch("ABCDE"), 3532);
 | 
|    assertToStringEquals("(A, B),A,B", res[1207].firstMatch("(A, B)"), 3533);
 | 
|    assertToStringEquals("ABCD", res[1209].firstMatch("ABCD"), 3534);
 | 
| @@ -5264,8 +5715,10 @@ void main() {
 | 
|    assertNull(res[1241].firstMatch("a\nB"), 3615);
 | 
|    assertNull(res[1241].firstMatch("a\nB"), 3616);
 | 
|    assertToStringEquals("cabbbb", res[1242].firstMatch("cabbbb"), 3617);
 | 
| -  assertToStringEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", res[1243].firstMatch("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618);
 | 
| -  assertToStringEquals("foobar1234baz", res[1244].firstMatch("foobar1234baz"), 3619);
 | 
| +  assertToStringEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
 | 
| +      res[1243].firstMatch("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618);
 | 
| +  assertToStringEquals(
 | 
| +      "foobar1234baz", res[1244].firstMatch("foobar1234baz"), 3619);
 | 
|    assertToStringEquals("x~~,~~", res[1245].firstMatch("x~~"), 3620);
 | 
|    assertToStringEquals("aaac", res[1246].firstMatch("aaac"), 3621);
 | 
|    assertToStringEquals("aaac", res[1247].firstMatch("aaac"), 3622);
 | 
| @@ -5300,12 +5753,15 @@ void main() {
 | 
|    assertToStringEquals("one:,one:", res[1251].firstMatch("one:"), 3651);
 | 
|    assertNull(res[1251].firstMatch("a"), 3652);
 | 
|    assertToStringEquals("abcd,,abcd", res[1252].firstMatch("abcd"), 3653);
 | 
| -  assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1252].firstMatch("xy:z:::abcd"), 3654);
 | 
| +  assertToStringEquals(
 | 
| +      "xy:z:::abcd,xy:z:::,abcd", res[1252].firstMatch("xy:z:::abcd"), 3654);
 | 
|    assertToStringEquals("aexyc,c", res[1253].firstMatch("aexycd"), 3655);
 | 
|    assertToStringEquals("aab,aa", res[1254].firstMatch("caab"), 3656);
 | 
|    assertToStringEquals("abcd,,abcd", res[1255].firstMatch("abcd"), 3657);
 | 
| -  assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1255].firstMatch("xy:z:::abcd"), 3658);
 | 
| -  assertToStringEquals("Failers,,Failers", res[1255].firstMatch("*** Failers"), 3659);
 | 
| +  assertToStringEquals(
 | 
| +      "xy:z:::abcd,xy:z:::,abcd", res[1255].firstMatch("xy:z:::abcd"), 3658);
 | 
| +  assertToStringEquals(
 | 
| +      "Failers,,Failers", res[1255].firstMatch("*** Failers"), 3659);
 | 
|    assertNull(res[1255].firstMatch("abcd:"), 3660);
 | 
|    assertNull(res[1255].firstMatch("abcd:"), 3661);
 | 
|    assertToStringEquals("aexyc,c", res[1256].firstMatch("aexycd"), 3662);
 | 
| @@ -5326,10 +5782,22 @@ void main() {
 | 
|    assertNull(res[1265].firstMatch("alphabetabcd"), 3677);
 | 
|    assertNull(res[1265].firstMatch("endingwxyz"), 3678);
 | 
|    assertNull(res[1265].firstMatch("*** Failers"), 3679);
 | 
| -  assertNull(res[1265].firstMatch("a rather long string that doesn't end with one of them"), 3680);
 | 
| -  assertNull(res[1265].firstMatch("word cat dog elephant mussel cow horse canary baboon snake shark otherword"), 3681);
 | 
| -  assertNull(res[1265].firstMatch("word cat dog elephant mussel cow horse canary baboon snake shark"), 3682);
 | 
| -  assertNull(res[1265].firstMatch("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope"), 3683);
 | 
| +  assertNull(
 | 
| +      res[1265]
 | 
| +          .firstMatch("a rather long string that doesn't end with one of them"),
 | 
| +      3680);
 | 
| +  assertNull(
 | 
| +      res[1265].firstMatch(
 | 
| +          "word cat dog elephant mussel cow horse canary baboon snake shark otherword"),
 | 
| +      3681);
 | 
| +  assertNull(
 | 
| +      res[1265].firstMatch(
 | 
| +          "word cat dog elephant mussel cow horse canary baboon snake shark"),
 | 
| +      3682);
 | 
| +  assertNull(
 | 
| +      res[1265].firstMatch(
 | 
| +          "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope"),
 | 
| +      3683);
 | 
|    assertNull(res[1265].firstMatch("999foo"), 3684);
 | 
|    assertNull(res[1265].firstMatch("123999foo "), 3685);
 | 
|    assertNull(res[1265].firstMatch("*** Failers"), 3686);
 | 
| @@ -5361,9 +5829,11 @@ void main() {
 | 
|    assertNull(res[1271].firstMatch(" "), 3717);
 | 
|    assertNull(res[1272].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3718);
 | 
|    assertNull(res[1272].firstMatch(" "), 3719);
 | 
| -  assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1273].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3720);
 | 
| +  assertToStringEquals(" \x09\n\x0c\x0d\x0b",
 | 
| +      res[1273].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3720);
 | 
|    assertToStringEquals(" ", res[1273].firstMatch(" "), 3721);
 | 
| -  assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1274].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3722);
 | 
| +  assertToStringEquals(" \x09\n\x0c\x0d\x0b",
 | 
| +      res[1274].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3722);
 | 
|    assertToStringEquals(" ", res[1274].firstMatch(" "), 3723);
 | 
|    assertNull(res[1275].firstMatch("ab"), 3724);
 | 
|    assertNull(res[1278].firstMatch("abcabcabc"), 3725);
 | 
| @@ -5434,14 +5904,29 @@ void main() {
 | 
|    assertNull(res[1292].firstMatch("*** Failers"), 3791);
 | 
|    assertNull(res[1292].firstMatch("def  "), 3792);
 | 
|    assertNull(res[1292].firstMatch(""), 3793);
 | 
| -  assertToStringEquals("line\nbreak", res[1293].firstMatch("this is a line\nbreak"), 3794);
 | 
| -  assertToStringEquals("line\nbreak", res[1293].firstMatch("line one\nthis is a line\nbreak in the second line "), 3795);
 | 
| -  assertToStringEquals("line\nbreak", res[1294].firstMatch("this is a line\nbreak"), 3796);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[1293].firstMatch("this is a line\nbreak"), 3794);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[1293]
 | 
| +          .firstMatch("line one\nthis is a line\nbreak in the second line "),
 | 
| +      3795);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[1294].firstMatch("this is a line\nbreak"), 3796);
 | 
|    assertNull(res[1294].firstMatch("** Failers "), 3797);
 | 
| -  assertToStringEquals("line\nbreak", res[1294].firstMatch("line one\nthis is a line\nbreak in the second line "), 3798);
 | 
| -  assertToStringEquals("line\nbreak", res[1295].firstMatch("this is a line\nbreak"), 3799);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[1294]
 | 
| +          .firstMatch("line one\nthis is a line\nbreak in the second line "),
 | 
| +      3798);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak", res[1295].firstMatch("this is a line\nbreak"), 3799);
 | 
|    assertNull(res[1295].firstMatch("** Failers "), 3800);
 | 
| -  assertToStringEquals("line\nbreak", res[1295].firstMatch("line one\nthis is a line\nbreak in the second line "), 3801);
 | 
| +  assertToStringEquals(
 | 
| +      "line\nbreak",
 | 
| +      res[1295]
 | 
| +          .firstMatch("line one\nthis is a line\nbreak in the second line "),
 | 
| +      3801);
 | 
|    assertNull(res[1296].firstMatch("123P"), 3802);
 | 
|    assertNull(res[1296].firstMatch("a4PR"), 3803);
 | 
|    assertNull(res[1297].firstMatch("123P"), 3804);
 | 
| @@ -5457,10 +5942,14 @@ void main() {
 | 
|    assertToStringEquals("", res[1298].firstMatch("aB  "), 3814);
 | 
|    assertToStringEquals("", res[1298].firstMatch("AB"), 3815);
 | 
|    assertToStringEquals("", res[1298].firstMatch("aB  "), 3816);
 | 
| -  assertToStringEquals("Content-Type:xxxxxyyy ", res[1299].firstMatch("Content-Type:xxxxxyyy "), 3817);
 | 
| -  assertToStringEquals("Content-Type:xxxxxyyyz", res[1300].firstMatch("Content-Type:xxxxxyyyz"), 3818);
 | 
| -  assertToStringEquals("Content-Type:xxxyyy ", res[1301].firstMatch("Content-Type:xxxyyy "), 3819);
 | 
| -  assertToStringEquals("Content-Type:xxxyyyz", res[1302].firstMatch("Content-Type:xxxyyyz"), 3820);
 | 
| +  assertToStringEquals("Content-Type:xxxxxyyy ",
 | 
| +      res[1299].firstMatch("Content-Type:xxxxxyyy "), 3817);
 | 
| +  assertToStringEquals("Content-Type:xxxxxyyyz",
 | 
| +      res[1300].firstMatch("Content-Type:xxxxxyyyz"), 3818);
 | 
| +  assertToStringEquals("Content-Type:xxxyyy ",
 | 
| +      res[1301].firstMatch("Content-Type:xxxyyy "), 3819);
 | 
| +  assertToStringEquals("Content-Type:xxxyyyz",
 | 
| +      res[1302].firstMatch("Content-Type:xxxyyyz"), 3820);
 | 
|    assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc"), 3821);
 | 
|    assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc<lf>"), 3822);
 | 
|    assertToStringEquals("abc", res[1303].firstMatch("xyz\x0d\nabc<lf>"), 3823);
 | 
| @@ -5477,8 +5966,10 @@ void main() {
 | 
|    assertToStringEquals("abc", res[1304].firstMatch("xyzabc\npqr "), 3834);
 | 
|    assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d<cr> "), 3835);
 | 
|    assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0dpqr<cr> "), 3836);
 | 
| -  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d\n<crlf> "), 3837);
 | 
| -  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d\npqr<crlf> "), 3838);
 | 
| +  assertToStringEquals(
 | 
| +      "abc", res[1304].firstMatch("xyzabc\x0d\n<crlf> "), 3837);
 | 
| +  assertToStringEquals(
 | 
| +      "abc", res[1304].firstMatch("xyzabc\x0d\npqr<crlf> "), 3838);
 | 
|    assertNull(res[1304].firstMatch("** Failers"), 3839);
 | 
|    assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d "), 3840);
 | 
|    assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0dpqr "), 3841);
 | 
| @@ -5503,14 +5994,19 @@ void main() {
 | 
|    assertToStringEquals("abc", res[1308].firstMatch("abc\x0d\ndef"), 3860);
 | 
|    assertToStringEquals("<cr>abc", res[1308].firstMatch("<cr>abc\ndef"), 3861);
 | 
|    assertToStringEquals("<cr>abc", res[1308].firstMatch("<cr>abc\x0ddef"), 3862);
 | 
| -  assertToStringEquals("<cr>abc", res[1308].firstMatch("<cr>abc\x0d\ndef"), 3863);
 | 
| -  assertToStringEquals("<crlf>abc", res[1308].firstMatch("<crlf>abc\ndef"), 3864);
 | 
| -  assertToStringEquals("<crlf>abc", res[1308].firstMatch("<crlf>abc\x0ddef"), 3865);
 | 
| -  assertToStringEquals("<crlf>abc", res[1308].firstMatch("<crlf>abc\x0d\ndef"), 3866);
 | 
| +  assertToStringEquals(
 | 
| +      "<cr>abc", res[1308].firstMatch("<cr>abc\x0d\ndef"), 3863);
 | 
| +  assertToStringEquals(
 | 
| +      "<crlf>abc", res[1308].firstMatch("<crlf>abc\ndef"), 3864);
 | 
| +  assertToStringEquals(
 | 
| +      "<crlf>abc", res[1308].firstMatch("<crlf>abc\x0ddef"), 3865);
 | 
| +  assertToStringEquals(
 | 
| +      "<crlf>abc", res[1308].firstMatch("<crlf>abc\x0d\ndef"), 3866);
 | 
|    assertNull(res[1309].firstMatch("abc\ndef"), 3867);
 | 
|    assertNull(res[1309].firstMatch("abc\x0ddef"), 3868);
 | 
|    assertNull(res[1309].firstMatch("abc\x0d\ndef"), 3869);
 | 
| -  assertToStringEquals("abc=xyz\\,", res[1310].firstMatch("abc=xyz\\\npqr"), 3870);
 | 
| +  assertToStringEquals(
 | 
| +      "abc=xyz\\,", res[1310].firstMatch("abc=xyz\\\npqr"), 3870);
 | 
|    assertToStringEquals("aaaa,a,", res[1311].firstMatch("aaaa"), 3871);
 | 
|    assertToStringEquals("aaaa", res[1312].firstMatch("aaaa"), 3872);
 | 
|    assertToStringEquals("aaaa,a,", res[1313].firstMatch("aaaa"), 3873);
 | 
| @@ -5522,8 +6018,16 @@ void main() {
 | 
|    assertNull(res[1317].firstMatch("a\nb<any>"), 3879);
 | 
|    assertNull(res[1317].firstMatch("a\x0db<cr>   "), 3880);
 | 
|    assertNull(res[1317].firstMatch("a\x0db<any>   "), 3881);
 | 
| -  assertToStringEquals("abc1", res[1318].firstMatch("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882);
 | 
| -  assertToStringEquals("abc1", res[1319].firstMatch("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[1318].firstMatch(
 | 
| +          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"),
 | 
| +      3882);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[1319].firstMatch(
 | 
| +          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"),
 | 
| +      3883);
 | 
|    assertNull(res[1320].firstMatch("a\nb"), 3884);
 | 
|    assertNull(res[1320].firstMatch("a\x0db"), 3885);
 | 
|    assertNull(res[1320].firstMatch("a\x0d\nb"), 3886);
 | 
| @@ -5619,7 +6123,8 @@ void main() {
 | 
|    assertNull(res[1335].firstMatch(">XYZ   "), 3976);
 | 
|    assertNull(res[1335].firstMatch(">  X NY Z"), 3977);
 | 
|    assertNull(res[1336].firstMatch(">XY\nZ\nA\x0bNN\x0c"), 3978);
 | 
| -  assertNull(res[1336].firstMatch(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c"), 3979);
 | 
| +  assertNull(
 | 
| +      res[1336].firstMatch(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c"), 3979);
 | 
|    assertNull(res[1337].firstMatch("\x0d\nA"), 3980);
 | 
|    assertToStringEquals("\nA", res[1338].firstMatch("\x0d\nA "), 3981);
 | 
|    assertToStringEquals("\nA", res[1339].firstMatch("\x0d\nA "), 3982);
 | 
| @@ -5714,12 +6219,14 @@ void main() {
 | 
|    assertToStringEquals("x", res[1357].firstMatch("ax{100}   "), 4071);
 | 
|    assertToStringEquals("b", res[1357].firstMatch("ab99"), 4072);
 | 
|    assertToStringEquals("x", res[1357].firstMatch("x{123}x{123}45"), 4073);
 | 
| -  assertToStringEquals("x", res[1357].firstMatch("x{400}x{401}x{402}6  "), 4074);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[1357].firstMatch("x{400}x{401}x{402}6  "), 4074);
 | 
|    assertToStringEquals("*", res[1357].firstMatch("*** Failers"), 4075);
 | 
|    assertToStringEquals("d", res[1357].firstMatch("d99"), 4076);
 | 
|    assertToStringEquals("x", res[1357].firstMatch("x{123}x{122}4   "), 4077);
 | 
|    assertToStringEquals("x", res[1357].firstMatch("x{400}x{403}6  "), 4078);
 | 
| -  assertToStringEquals("x", res[1357].firstMatch("x{400}x{401}x{402}x{402}6  "), 4079);
 | 
| +  assertToStringEquals(
 | 
| +      "x", res[1357].firstMatch("x{400}x{401}x{402}x{402}6  "), 4079);
 | 
|    assertNull(res[1358].firstMatch("\ufffd]"), 4080);
 | 
|    assertNull(res[1358].firstMatch("\ufffd"), 4081);
 | 
|    assertNull(res[1358].firstMatch("\ufffd\ufffd\ufffd"), 4082);
 | 
| @@ -5737,13 +6244,18 @@ void main() {
 | 
|    assertNull(res[1360].firstMatch("ac\ncb "), 4094);
 | 
|    assertToStringEquals("a\xc0,,\xc0", res[1361].firstMatch("a\xc0\x88b"), 4095);
 | 
|    assertToStringEquals("ax,,x", res[1362].firstMatch("ax{100}b"), 4096);
 | 
| -  assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[1363].firstMatch("a\xc0\x88b"), 4097);
 | 
| -  assertToStringEquals("ax{100}b,x{100},b", res[1364].firstMatch("ax{100}b"), 4098);
 | 
| -  assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1365].firstMatch("a\xc0\x92bcd"), 4099);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x88b,\xc0\x88,b", res[1363].firstMatch("a\xc0\x88b"), 4097);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{100}b,x{100},b", res[1364].firstMatch("ax{100}b"), 4098);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x92,\xc0,\x92", res[1365].firstMatch("a\xc0\x92bcd"), 4099);
 | 
|    assertToStringEquals("ax{,x,{", res[1366].firstMatch("ax{240}bcd"), 4100);
 | 
| -  assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1367].firstMatch("a\xc0\x92bcd"), 4101);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0\x92,\xc0,\x92", res[1367].firstMatch("a\xc0\x92bcd"), 4101);
 | 
|    assertToStringEquals("ax{,x,{", res[1368].firstMatch("ax{240}bcd"), 4102);
 | 
| -  assertToStringEquals("a\xc0,,\xc0", res[1369].firstMatch("a\xc0\x92bcd"), 4103);
 | 
| +  assertToStringEquals(
 | 
| +      "a\xc0,,\xc0", res[1369].firstMatch("a\xc0\x92bcd"), 4103);
 | 
|    assertToStringEquals("ax,,x", res[1370].firstMatch("ax{240}bcd"), 4104);
 | 
|    assertNull(res[1371].firstMatch("ax{1234}xyb "), 4105);
 | 
|    assertNull(res[1371].firstMatch("ax{1234}x{4321}yb "), 4106);
 | 
| @@ -5751,37 +6263,59 @@ void main() {
 | 
|    assertNull(res[1371].firstMatch("*** Failers"), 4108);
 | 
|    assertNull(res[1371].firstMatch("ax{1234}b "), 4109);
 | 
|    assertNull(res[1371].firstMatch("ac\ncb "), 4110);
 | 
| -  assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1372].firstMatch("ax{1234}xyb "), 4111);
 | 
| -  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].firstMatch("ax{1234}x{4321}yb "), 4112);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].firstMatch("ax{1234}x{4321}x{3412}b "), 4113);
 | 
| -  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].firstMatch("axxxxbcdefghijb "), 4114);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4115);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}xyb,x{1234}xy", res[1372].firstMatch("ax{1234}xyb "), 4111);
 | 
| +  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
 | 
| +      res[1372].firstMatch("ax{1234}x{4321}yb "), 4112);
 | 
| +  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
 | 
| +      res[1372].firstMatch("ax{1234}x{4321}x{3412}b "), 4113);
 | 
| +  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij",
 | 
| +      res[1372].firstMatch("axxxxbcdefghijb "), 4114);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
 | 
| +      res[1372].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
 | 
| +      4115);
 | 
|    assertNull(res[1372].firstMatch("*** Failers"), 4116);
 | 
| -  assertToStringEquals("ax{1234}b,x{1234}", res[1372].firstMatch("ax{1234}b "), 4117);
 | 
| -  assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1373].firstMatch("ax{1234}xyb "), 4118);
 | 
| -  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].firstMatch("ax{1234}x{4321}yb "), 4119);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].firstMatch("ax{1234}x{4321}x{3412}b "), 4120);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[1373].firstMatch("axxxxbcdefghijb "), 4121);
 | 
| -  assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4122);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}b,x{1234}", res[1372].firstMatch("ax{1234}b "), 4117);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}xyb,x{1234}xy", res[1373].firstMatch("ax{1234}xyb "), 4118);
 | 
| +  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
 | 
| +      res[1373].firstMatch("ax{1234}x{4321}yb "), 4119);
 | 
| +  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
 | 
| +      res[1373].firstMatch("ax{1234}x{4321}x{3412}b "), 4120);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[1373].firstMatch("axxxxbcdefghijb "), 4121);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
 | 
| +      res[1373].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
 | 
| +      4122);
 | 
|    assertNull(res[1373].firstMatch("*** Failers"), 4123);
 | 
| -  assertToStringEquals("ax{1234}b,x{1234}", res[1373].firstMatch("ax{1234}b "), 4124);
 | 
| +  assertToStringEquals(
 | 
| +      "ax{1234}b,x{1234}", res[1373].firstMatch("ax{1234}b "), 4124);
 | 
|    assertNull(res[1374].firstMatch("ax{1234}xyb "), 4125);
 | 
|    assertNull(res[1374].firstMatch("ax{1234}x{4321}yb "), 4126);
 | 
|    assertNull(res[1374].firstMatch("ax{1234}x{4321}x{3412}b "), 4127);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[1374].firstMatch("axxxxbcdefghijb "), 4128);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[1374].firstMatch("axxxxbcdefghijb "), 4128);
 | 
|    assertNull(res[1374].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4129);
 | 
| -  assertToStringEquals("axbxxb,xbxx", res[1374].firstMatch("axbxxbcdefghijb "), 4130);
 | 
| -  assertToStringEquals("axxxxxb,xxxxx", res[1374].firstMatch("axxxxxbcdefghijb "), 4131);
 | 
| +  assertToStringEquals(
 | 
| +      "axbxxb,xbxx", res[1374].firstMatch("axbxxbcdefghijb "), 4130);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxxb,xxxxx", res[1374].firstMatch("axxxxxbcdefghijb "), 4131);
 | 
|    assertNull(res[1374].firstMatch("*** Failers"), 4132);
 | 
|    assertNull(res[1374].firstMatch("ax{1234}b "), 4133);
 | 
|    assertNull(res[1374].firstMatch("axxxxxxbcdefghijb "), 4134);
 | 
|    assertNull(res[1375].firstMatch("ax{1234}xyb "), 4135);
 | 
|    assertNull(res[1375].firstMatch("ax{1234}x{4321}yb "), 4136);
 | 
|    assertNull(res[1375].firstMatch("ax{1234}x{4321}x{3412}b "), 4137);
 | 
| -  assertToStringEquals("axxxxb,xxxx", res[1375].firstMatch("axxxxbcdefghijb "), 4138);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxb,xxxx", res[1375].firstMatch("axxxxbcdefghijb "), 4138);
 | 
|    assertNull(res[1375].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4139);
 | 
| -  assertToStringEquals("axbxxb,xbxx", res[1375].firstMatch("axbxxbcdefghijb "), 4140);
 | 
| -  assertToStringEquals("axxxxxb,xxxxx", res[1375].firstMatch("axxxxxbcdefghijb "), 4141);
 | 
| +  assertToStringEquals(
 | 
| +      "axbxxb,xbxx", res[1375].firstMatch("axbxxbcdefghijb "), 4140);
 | 
| +  assertToStringEquals(
 | 
| +      "axxxxxb,xxxxx", res[1375].firstMatch("axxxxxbcdefghijb "), 4141);
 | 
|    assertNull(res[1375].firstMatch("*** Failers"), 4142);
 | 
|    assertNull(res[1375].firstMatch("ax{1234}b "), 4143);
 | 
|    assertNull(res[1375].firstMatch("axxxxxxbcdefghijb "), 4144);
 | 
| @@ -5813,16 +6347,23 @@ void main() {
 | 
|    assertNull(res[1383].firstMatch("abcd"), 4172);
 | 
|    assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100} "), 4173);
 | 
|    assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100} "), 4174);
 | 
| -  assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4175);
 | 
| +  assertToStringEquals(
 | 
| +      "x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4175);
 | 
|    assertNull(res[1383].firstMatch("abce"), 4176);
 | 
| -  assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4177);
 | 
| +  assertToStringEquals(
 | 
| +      "x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4177);
 | 
|    assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4178);
 | 
|    assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4179);
 | 
|    assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4180);
 | 
|    assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}XX"), 4181);
 | 
| -  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"), 4182);
 | 
| -  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"), 4183);
 | 
| -  assertToStringEquals("Xy", res[1383].firstMatch("Xyyyax{100}x{100}bXzzz"), 4184);
 | 
| +  assertNull(
 | 
| +      res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
 | 
| +      4182);
 | 
| +  assertNull(
 | 
| +      res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
 | 
| +      4183);
 | 
| +  assertToStringEquals(
 | 
| +      "Xy", res[1383].firstMatch("Xyyyax{100}x{100}bXzzz"), 4184);
 | 
|    assertToStringEquals("X", res[1386].firstMatch("1X2"), 4185);
 | 
|    assertToStringEquals("x", res[1386].firstMatch("1x{100}2 "), 4186);
 | 
|    assertToStringEquals(">X", res[1387].firstMatch("> >X Y"), 4187);
 | 
| @@ -5830,7 +6371,8 @@ void main() {
 | 
|    assertToStringEquals("1", res[1388].firstMatch("x{100}3"), 4189);
 | 
|    assertToStringEquals(" ", res[1389].firstMatch("x{100} X"), 4190);
 | 
|    assertToStringEquals("abcd", res[1390].firstMatch("12abcd34"), 4191);
 | 
| -  assertToStringEquals("*** Failers", res[1390].firstMatch("*** Failers"), 4192);
 | 
| +  assertToStringEquals(
 | 
| +      "*** Failers", res[1390].firstMatch("*** Failers"), 4192);
 | 
|    assertToStringEquals("  ", res[1390].firstMatch("1234  "), 4193);
 | 
|    assertToStringEquals("abc", res[1391].firstMatch("12abcd34"), 4194);
 | 
|    assertToStringEquals("ab", res[1391].firstMatch("12ab34"), 4195);
 | 
| @@ -5949,8 +6491,16 @@ void main() {
 | 
|    assertToStringEquals(",", res[1416].firstMatch("catac"), 4308);
 | 
|    assertToStringEquals(",", res[1416].firstMatch("ax{256}a "), 4309);
 | 
|    assertToStringEquals(",", res[1416].firstMatch("x{85}"), 4310);
 | 
| -  assertToStringEquals("abc1", res[1417].firstMatch("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311);
 | 
| -  assertToStringEquals("abc1", res[1418].firstMatch("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[1417].firstMatch(
 | 
| +          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"),
 | 
| +      4311);
 | 
| +  assertToStringEquals(
 | 
| +      "abc1",
 | 
| +      res[1418].firstMatch(
 | 
| +          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"),
 | 
| +      4312);
 | 
|    assertNull(res[1419].firstMatch("a\nb"), 4313);
 | 
|    assertNull(res[1419].firstMatch("a\x0db"), 4314);
 | 
|    assertNull(res[1419].firstMatch("a\x0d\nb"), 4315);
 | 
| @@ -6008,8 +6558,11 @@ void main() {
 | 
|    assertNull(res[1429].firstMatch("Xx{180e}Xx{85}"), 4367);
 | 
|    assertNull(res[1429].firstMatch("** Failers"), 4368);
 | 
|    assertNull(res[1429].firstMatch("x{2009} X\n   "), 4369);
 | 
| -  assertNull(res[1430].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"), 4370);
 | 
| -  assertNull(res[1430].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 4371);
 | 
| +  assertNull(
 | 
| +      res[1430].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"),
 | 
| +      4370);
 | 
| +  assertNull(
 | 
| +      res[1430].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 4371);
 | 
|    assertNull(res[1430].firstMatch("\x09 x{202f}\n\x0b\x0c"), 4372);
 | 
|    assertNull(res[1430].firstMatch("** Failers "), 4373);
 | 
|    assertNull(res[1430].firstMatch("\x09x{200a}x{a0}x{2028}\x0b"), 4374);
 | 
| @@ -6066,28 +6619,39 @@ void main() {
 | 
|    assertNull(res[1441].firstMatch("abcd "), 4425);
 | 
|    assertNull(res[1442].firstMatch("abcdAx{300}x{301}x{302}"), 4426);
 | 
|    assertNull(res[1442].firstMatch("Ax{300}x{301}x{302}"), 4427);
 | 
| -  assertNull(res[1442].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}"), 4428);
 | 
| +  assertNull(
 | 
| +      res[1442].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}"), 4428);
 | 
|    assertNull(res[1442].firstMatch("a "), 4429);
 | 
|    assertNull(res[1442].firstMatch("*** Failers "), 4430);
 | 
|    assertNull(res[1442].firstMatch("x{300}x{301}x{302}"), 4431);
 | 
|    assertToStringEquals("abc", res[1443].firstMatch("abc"), 4432);
 | 
|    assertToStringEquals("abc", res[1443].firstMatch("Ax{300}abc"), 4433);
 | 
| -  assertToStringEquals("abc", res[1443].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434);
 | 
| +  assertToStringEquals(
 | 
| +      "abc",
 | 
| +      res[1443].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
 | 
| +      4434);
 | 
|    assertToStringEquals("abc", res[1443].firstMatch("x{300}abc  "), 4435);
 | 
|    assertNull(res[1443].firstMatch("*** Failers"), 4436);
 | 
|    assertToStringEquals("abc", res[1444].firstMatch("abc"), 4437);
 | 
|    assertNull(res[1444].firstMatch("Ax{300}abc"), 4438);
 | 
|    assertNull(res[1444].firstMatch("*** Failers"), 4439);
 | 
| -  assertNull(res[1444].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4440);
 | 
| +  assertNull(
 | 
| +      res[1444].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
 | 
| +      4440);
 | 
|    assertNull(res[1444].firstMatch("x{300}abc  "), 4441);
 | 
|    assertToStringEquals("abc", res[1445].firstMatch("abc"), 4442);
 | 
|    assertToStringEquals("abc", res[1445].firstMatch("Ax{300}abc"), 4443);
 | 
| -  assertToStringEquals("abc", res[1445].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444);
 | 
| +  assertToStringEquals(
 | 
| +      "abc",
 | 
| +      res[1445].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
 | 
| +      4444);
 | 
|    assertToStringEquals("abc", res[1445].firstMatch("x{300}abc  "), 4445);
 | 
|    assertNull(res[1445].firstMatch("*** Failers"), 4446);
 | 
|    assertToStringEquals("abc", res[1446].firstMatch("abc"), 4447);
 | 
|    assertNull(res[1446].firstMatch("Ax{300}abc"), 4448);
 | 
| -  assertNull(res[1446].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4449);
 | 
| +  assertNull(
 | 
| +      res[1446].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
 | 
| +      4449);
 | 
|    assertNull(res[1446].firstMatch("*** Failers"), 4450);
 | 
|    assertNull(res[1446].firstMatch("x{300}abc  "), 4451);
 | 
|    assertNull(res[1447].firstMatch("A=b"), 4452);
 | 
| @@ -6099,13 +6663,21 @@ void main() {
 | 
|    assertNull(res[1448].firstMatch("=c "), 4458);
 | 
|    assertNull(res[1448].firstMatch("*** Failers"), 4459);
 | 
|    assertNull(res[1448].firstMatch("1=2  "), 4460);
 | 
| -  assertNull(res[1449].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"), 4461);
 | 
| -  assertNull(res[1449].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X "), 4462);
 | 
| +  assertNull(
 | 
| +      res[1449].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"), 4461);
 | 
| +  assertNull(
 | 
| +      res[1449].firstMatch(
 | 
| +          "Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X "),
 | 
| +      4462);
 | 
|    assertNull(res[1449].firstMatch("*** Failers"), 4463);
 | 
|    assertNull(res[1449].firstMatch("X"), 4464);
 | 
|    assertNull(res[1449].firstMatch("Ax{300}x{301}x{302}X"), 4465);
 | 
| -  assertNull(res[1449].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"), 4466);
 | 
| -  assertNull(res[1450].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 4467);
 | 
| +  assertNull(
 | 
| +      res[1449].firstMatch(
 | 
| +          "Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"),
 | 
| +      4466);
 | 
| +  assertNull(
 | 
| +      res[1450].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 4467);
 | 
|    assertNull(res[1450].firstMatch("\npx{300}9!\$ < "), 4468);
 | 
|    assertNull(res[1450].firstMatch("** Failers "), 4469);
 | 
|    assertNull(res[1450].firstMatch("apx{300}9!\$ < "), 4470);
 | 
| @@ -6177,9 +6749,18 @@ void main() {
 | 
|    assertNull(res[1470].firstMatch("** Failers"), 4536);
 | 
|    assertNull(res[1470].firstMatch("X"), 4537);
 | 
|    assertNull(res[1470].firstMatch("x{903}"), 4538);
 | 
| -  assertNull(res[1470].firstMatch("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"), 4539);
 | 
| -  assertNull(res[1470].firstMatch("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"), 4540);
 | 
| -  assertNull(res[1470].firstMatch("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"), 4541);
 | 
| +  assertNull(
 | 
| +      res[1470].firstMatch(
 | 
| +          "0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"),
 | 
| +      4539);
 | 
| +  assertNull(
 | 
| +      res[1470].firstMatch(
 | 
| +          "x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"),
 | 
| +      4540);
 | 
| +  assertNull(
 | 
| +      res[1470].firstMatch(
 | 
| +          "x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"),
 | 
| +      4541);
 | 
|    assertNull(res[1470].firstMatch("** Failers"), 4542);
 | 
|    assertNull(res[1470].firstMatch("X"), 4543);
 | 
|    assertNull(res[1471].firstMatch("x{16ee}"), 4544);
 | 
| @@ -6319,17 +6900,51 @@ void main() {
 | 
|    assertToStringEquals("d", res[1498].firstMatch("abcd"), 4678);
 | 
|    assertNull(res[1498].firstMatch("** Failers"), 4679);
 | 
|    assertNull(res[1498].firstMatch("1234"), 4680);
 | 
| -  assertNull(res[1499].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 4681);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682);
 | 
| +  assertNull(
 | 
| +      res[1499].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      4681);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[1499].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      4682);
 | 
|    assertToStringEquals(" ", res[1499].firstMatch(" "), 4683);
 | 
| -  assertNull(res[1499].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 4684);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685);
 | 
| -  assertNull(res[1500].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 4686);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687);
 | 
| -  assertNull(res[1501].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 4688);
 | 
| -  assertNull(res[1501].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4689);
 | 
| -  assertNull(res[1502].firstMatch("11111111111111111111111111111111111111111111111111111111111111111111111"), 4690);
 | 
| -  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691);
 | 
| +  assertNull(
 | 
| +      res[1499].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      4684);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[1499].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      4685);
 | 
| +  assertNull(
 | 
| +      res[1500].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      4686);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[1500].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      4687);
 | 
| +  assertNull(
 | 
| +      res[1501].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      4688);
 | 
| +  assertNull(
 | 
| +      res[1501].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      4689);
 | 
| +  assertNull(
 | 
| +      res[1502].firstMatch(
 | 
| +          "11111111111111111111111111111111111111111111111111111111111111111111111"),
 | 
| +      4690);
 | 
| +  assertToStringEquals(
 | 
| +      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 | 
| +      res[1502].firstMatch(
 | 
| +          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 | 
| +      4691);
 | 
|    assertNull(res[1503].firstMatch("a"), 4692);
 | 
|    assertNull(res[1503].firstMatch("A "), 4693);
 | 
|    assertNull(res[1504].firstMatch("a"), 4694);
 | 
| @@ -6404,23 +7019,31 @@ void main() {
 | 
|    assertNull(res[1510].firstMatch("*** Failers"), 4763);
 | 
|    assertNull(res[1510].firstMatch("AXYZ"), 4764);
 | 
|    assertNull(res[1511].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4765);
 | 
| -  assertNull(res[1511].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4766);
 | 
| +  assertNull(
 | 
| +      res[1511].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4766);
 | 
|    assertNull(res[1512].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4767);
 | 
| -  assertNull(res[1512].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4768);
 | 
| -  assertToStringEquals("A,,A", res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769);
 | 
| -  assertToStringEquals("A,,A", res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770);
 | 
| -  assertToStringEquals("A,,A", res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771);
 | 
| -  assertToStringEquals("A,,A", res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772);
 | 
| +  assertNull(
 | 
| +      res[1512].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4768);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771);
 | 
| +  assertToStringEquals("A,,A",
 | 
| +      res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772);
 | 
|    assertNull(res[1515].firstMatch("*** Failers"), 4773);
 | 
|    assertNull(res[1515].firstMatch("Ax{300}x{301}x{302}"), 4774);
 | 
|    assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}X"), 4775);
 | 
|    assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 4776);
 | 
|    assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 4777);
 | 
| -  assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4778);
 | 
| +  assertNull(
 | 
| +      res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4778);
 | 
|    assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}X"), 4779);
 | 
|    assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 4780);
 | 
|    assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 4781);
 | 
| -  assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4782);
 | 
| +  assertNull(
 | 
| +      res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4782);
 | 
|    assertNull(res[1518].firstMatch("12X"), 4783);
 | 
|    assertNull(res[1518].firstMatch("123X"), 4784);
 | 
|    assertNull(res[1518].firstMatch("*** Failers"), 4785);
 | 
| @@ -6588,7 +7211,10 @@ void main() {
 | 
|    assertNull(res[1543].firstMatch("x{c0}x{e0}x{116}x{117}"), 4947);
 | 
|    assertNull(res[1545].firstMatch("123abcdefg"), 4948);
 | 
|    assertNull(res[1545].firstMatch("123abc\xc4\xc5zz"), 4949);
 | 
| -  assertNull(res[1546].firstMatch("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="), 4950);
 | 
| +  assertNull(
 | 
| +      res[1546].firstMatch(
 | 
| +          "x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="),
 | 
| +      4950);
 | 
|    assertNull(res[1546].firstMatch("x{a77d}x{1d79}"), 4951);
 | 
|    assertNull(res[1546].firstMatch("x{1d79}x{a77d} "), 4952);
 | 
|    assertNull(res[1546].firstMatch("x{a77d}x{1d79}"), 4953);
 | 
| 
 |