File: EmbeddedLanguages\RegularExpressions\CSharpRegexParserTests_ReferenceTests.cs
Web Access
Project: src\src\EditorFeatures\CSharpTest2\Microsoft.CodeAnalysis.CSharp.EditorFeatures2.UnitTests.csproj (Microsoft.CodeAnalysis.CSharp.EditorFeatures2.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System.Text.RegularExpressions;
using Xunit;
 
namespace Microsoft.CodeAnalysis.CSharp.UnitTests.EmbeddedLanguages.RegularExpressions
{
    // All these tests came from the example at:
    // https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
    public partial class CSharpRegexParserTests
    {
        [Fact]
        public void ReferenceTest0()
        {
            Test("""
                @"[aeiou]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken>aeiou</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="[aeiou]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest1()
        {
            Test("""
                @"(?<duplicateWord>\w+)\s\k<duplicateWord>\W(?<nextWord>\w+)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="duplicateWord">duplicateWord</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <KCaptureEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>k</TextToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="duplicateWord">duplicateWord</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                      </KCaptureEscape>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>W</TextToken>
                      </CharacterClassEscape>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="nextWord">nextWord</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..68)" Text="(?&lt;duplicateWord&gt;\w+)\s\k&lt;duplicateWord&gt;\W(?&lt;nextWord&gt;\w+)" />
                    <Capture Name="1" Span="[10..31)" Text="(?&lt;duplicateWord&gt;\w+)" />
                    <Capture Name="2" Span="[52..68)" Text="(?&lt;nextWord&gt;\w+)" />
                    <Capture Name="duplicateWord" Span="[10..31)" Text="(?&lt;duplicateWord&gt;\w+)" />
                    <Capture Name="nextWord" Span="[52..68)" Text="(?&lt;nextWord&gt;\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest2()
        {
            Test("""
                @"((?<One>abc)\d+)?(?<Two>xyz)(.*)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrOneQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CaptureGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <LessThanToken>&lt;</LessThanToken>
                              <CaptureNameToken value="One">One</CaptureNameToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <Text>
                                  <TextToken>abc</TextToken>
                                </Text>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </CaptureGrouping>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="Two">Two</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <Text>
                            <TextToken>xyz</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ZeroOrMoreQuantifier>
                            <Wildcard>
                              <DotToken>.</DotToken>
                            </Wildcard>
                            <AsteriskToken>*</AsteriskToken>
                          </ZeroOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..42)" Text="((?&lt;One&gt;abc)\d+)?(?&lt;Two&gt;xyz)(.*)" />
                    <Capture Name="1" Span="[10..26)" Text="((?&lt;One&gt;abc)\d+)" />
                    <Capture Name="2" Span="[38..42)" Text="(.*)" />
                    <Capture Name="3" Span="[11..22)" Text="(?&lt;One&gt;abc)" />
                    <Capture Name="4" Span="[27..38)" Text="(?&lt;Two&gt;xyz)" />
                    <Capture Name="One" Span="[11..22)" Text="(?&lt;One&gt;abc)" />
                    <Capture Name="Two" Span="[27..38)" Text="(?&lt;Two&gt;xyz)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest3()
        {
            Test("""
                @"(\w+)\s(\1)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <BackreferenceEscape>
                            <BackslashToken>\</BackslashToken>
                            <NumberToken value="1">1</NumberToken>
                          </BackreferenceEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="(\w+)\s(\1)" />
                    <Capture Name="1" Span="[10..15)" Text="(\w+)" />
                    <Capture Name="2" Span="[17..21)" Text="(\1)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest4()
        {
            Test("""
                @"\Bqu\w+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>B</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>qu</TextToken>
                      </Text>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="\Bqu\w+" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest5()
        {
            Test("""
                @"\bare\w*\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>are</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="\bare\w*\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest6()
        {
            Test("""
                @"\G(\w+\s?\w*),?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>G</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                          <ZeroOrOneQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                            <QuestionToken>?</QuestionToken>
                          </ZeroOrOneQuantifier>
                          <ZeroOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <AsteriskToken>*</AsteriskToken>
                          </ZeroOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrOneQuantifier>
                        <Text>
                          <TextToken>,</TextToken>
                        </Text>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="\G(\w+\s?\w*),?" />
                    <Capture Name="1" Span="[12..23)" Text="(\w+\s?\w*)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest7()
        {
            Test("""
                @"\D+(?<digit>\d+)\D+(?<digit>\d+)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>D</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="digit">digit</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>D</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <ZeroOrOneQuantifier>
                        <CaptureGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <LessThanToken>&lt;</LessThanToken>
                          <CaptureNameToken value="digit">digit</CaptureNameToken>
                          <GreaterThanToken>&gt;</GreaterThanToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </CaptureGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..43)" Text="\D+(?&lt;digit&gt;\d+)\D+(?&lt;digit&gt;\d+)?" />
                    <Capture Name="1" Span="[13..26)" Text="(?&lt;digit&gt;\d+)" />
                    <Capture Name="digit" Span="[13..26)" Text="(?&lt;digit&gt;\d+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest8()
        {
            Test("""
                @"(\s\d{4}(-(\d{4}&#124;present))?,?)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="4">4</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <Text>
                                    <TextToken>-</TextToken>
                                  </Text>
                                  <SimpleGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <Sequence>
                                      <ExactNumericQuantifier>
                                        <CharacterClassEscape>
                                          <BackslashToken>\</BackslashToken>
                                          <TextToken>d</TextToken>
                                        </CharacterClassEscape>
                                        <OpenBraceToken>{</OpenBraceToken>
                                        <NumberToken value="4">4</NumberToken>
                                        <CloseBraceToken>}</CloseBraceToken>
                                      </ExactNumericQuantifier>
                                      <Text>
                                        <TextToken>&amp;#124;present</TextToken>
                                      </Text>
                                    </Sequence>
                                    <CloseParenToken>)</CloseParenToken>
                                  </SimpleGrouping>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..46)" Text="(\s\d{4}(-(\d{4}&amp;#124;present))?,?)+" />
                    <Capture Name="1" Span="[10..45)" Text="(\s\d{4}(-(\d{4}&amp;#124;present))?,?)" />
                    <Capture Name="2" Span="[18..41)" Text="(-(\d{4}&amp;#124;present))" />
                    <Capture Name="3" Span="[20..40)" Text="(\d{4}&amp;#124;present)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest9()
        {
            Test("""
                @"^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OpenRangeNumericQuantifier>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                                <SimpleGrouping>
                                  <OpenParenToken>(</OpenParenToken>
                                  <Sequence>
                                    <ZeroOrOneQuantifier>
                                      <CharacterClassEscape>
                                        <BackslashToken>\</BackslashToken>
                                        <TextToken>s</TextToken>
                                      </CharacterClassEscape>
                                      <QuestionToken>?</QuestionToken>
                                    </ZeroOrOneQuantifier>
                                  </Sequence>
                                  <CloseParenToken>)</CloseParenToken>
                                </SimpleGrouping>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="2">2</NumberToken>
                            <CommaToken>,</CommaToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </OpenRangeNumericQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <Text>
                        <TextToken>,</TextToken>
                      </Text>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>s</TextToken>
                          </CharacterClassEscape>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <Text>
                        <TextToken>,</TextToken>
                      </Text>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="4">4</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <Text>
                                    <TextToken>-</TextToken>
                                  </Text>
                                  <SimpleGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <Alternation>
                                      <Sequence>
                                        <ExactNumericQuantifier>
                                          <CharacterClassEscape>
                                            <BackslashToken>\</BackslashToken>
                                            <TextToken>d</TextToken>
                                          </CharacterClassEscape>
                                          <OpenBraceToken>{</OpenBraceToken>
                                          <NumberToken value="4">4</NumberToken>
                                          <CloseBraceToken>}</CloseBraceToken>
                                        </ExactNumericQuantifier>
                                      </Sequence>
                                      <BarToken>|</BarToken>
                                      <Sequence>
                                        <Text>
                                          <TextToken>present</TextToken>
                                        </Text>
                                      </Sequence>
                                    </Alternation>
                                    <CloseParenToken>)</CloseParenToken>
                                  </SimpleGrouping>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..72)" Text="^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+" />
                    <Capture Name="1" Span="[11..27)" Text="((\w+(\s?)){2,})" />
                    <Capture Name="2" Span="[12..22)" Text="(\w+(\s?))" />
                    <Capture Name="3" Span="[16..21)" Text="(\s?)" />
                    <Capture Name="4" Span="[30..40)" Text="(\w+\s\w+)" />
                    <Capture Name="5" Span="[41..71)" Text="(\s\d{4}(-(\d{4}|present))?,?)" />
                    <Capture Name="6" Span="[49..67)" Text="(-(\d{4}|present))" />
                    <Capture Name="7" Span="[51..66)" Text="(\d{4}|present)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest10()
        {
            Test("""
                @"^[0-9-[2468]]+$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <OneOrMoreQuantifier>
                        <CharacterClass>
                          <OpenBracketToken>[</OpenBracketToken>
                          <Sequence>
                            <CharacterClassRange>
                              <Text>
                                <TextToken>0</TextToken>
                              </Text>
                              <MinusToken>-</MinusToken>
                              <Text>
                                <TextToken>9</TextToken>
                              </Text>
                            </CharacterClassRange>
                            <CharacterClassSubtraction>
                              <MinusToken>-</MinusToken>
                              <CharacterClass>
                                <OpenBracketToken>[</OpenBracketToken>
                                <Sequence>
                                  <Text>
                                    <TextToken>2468</TextToken>
                                  </Text>
                                </Sequence>
                                <CloseBracketToken>]</CloseBracketToken>
                              </CharacterClass>
                            </CharacterClassSubtraction>
                          </Sequence>
                          <CloseBracketToken>]</CloseBracketToken>
                        </CharacterClass>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="^[0-9-[2468]]+$" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest11()
        {
            Test("""
                @"[a-z-[0-9]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassRange>
                                  <Text>
                                    <TextToken>0</TextToken>
                                  </Text>
                                  <MinusToken>-</MinusToken>
                                  <Text>
                                    <TextToken>9</TextToken>
                                  </Text>
                                </CharacterClassRange>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="[a-z-[0-9]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest12()
        {
            Test("""
                @"[\p{IsBasicLatin}-[\x00-\x7F]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>IsBasicLatin</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassRange>
                                  <HexEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>x</TextToken>
                                    <TextToken>00</TextToken>
                                  </HexEscape>
                                  <MinusToken>-</MinusToken>
                                  <HexEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>x</TextToken>
                                    <TextToken>7F</TextToken>
                                  </HexEscape>
                                </CharacterClassRange>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..40)" Text="[\p{IsBasicLatin}-[\x00-\x7F]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest13()
        {
            Test("""
                @"[\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <UnicodeEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>u</TextToken>
                              <TextToken>0000</TextToken>
                            </UnicodeEscape>
                            <MinusToken>-</MinusToken>
                            <UnicodeEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>u</TextToken>
                              <TextToken>FFFF</TextToken>
                            </UnicodeEscape>
                          </CharacterClassRange>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>s</TextToken>
                                </CharacterClassEscape>
                                <CategoryEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>p</TextToken>
                                  <OpenBraceToken>{</OpenBraceToken>
                                  <EscapeCategoryToken>P</EscapeCategoryToken>
                                  <CloseBraceToken>}</CloseBraceToken>
                                </CategoryEscape>
                                <CategoryEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>p</TextToken>
                                  <OpenBraceToken>{</OpenBraceToken>
                                  <EscapeCategoryToken>IsGreek</EscapeCategoryToken>
                                  <CloseBraceToken>}</CloseBraceToken>
                                </CategoryEscape>
                                <HexEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>x</TextToken>
                                  <TextToken>85</TextToken>
                                </HexEscape>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..50)" Text="[\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest14()
        {
            Test("""
                @"[a-z-[d-w-[m-o]]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassRange>
                                  <Text>
                                    <TextToken>d</TextToken>
                                  </Text>
                                  <MinusToken>-</MinusToken>
                                  <Text>
                                    <TextToken>w</TextToken>
                                  </Text>
                                </CharacterClassRange>
                                <CharacterClassSubtraction>
                                  <MinusToken>-</MinusToken>
                                  <CharacterClass>
                                    <OpenBracketToken>[</OpenBracketToken>
                                    <Sequence>
                                      <CharacterClassRange>
                                        <Text>
                                          <TextToken>m</TextToken>
                                        </Text>
                                        <MinusToken>-</MinusToken>
                                        <Text>
                                          <TextToken>o</TextToken>
                                        </Text>
                                      </CharacterClassRange>
                                    </Sequence>
                                    <CloseBracketToken>]</CloseBracketToken>
                                  </CharacterClass>
                                </CharacterClassSubtraction>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="[a-z-[d-w-[m-o]]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest15()
        {
            Test("""
                @"((\w+(\s?)){2,}"
                """, $$"""
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OpenRangeNumericQuantifier>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                                <SimpleGrouping>
                                  <OpenParenToken>(</OpenParenToken>
                                  <Sequence>
                                    <ZeroOrOneQuantifier>
                                      <CharacterClassEscape>
                                        <BackslashToken>\</BackslashToken>
                                        <TextToken>s</TextToken>
                                      </CharacterClassEscape>
                                      <QuestionToken>?</QuestionToken>
                                    </ZeroOrOneQuantifier>
                                  </Sequence>
                                  <CloseParenToken>)</CloseParenToken>
                                </SimpleGrouping>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="2">2</NumberToken>
                            <CommaToken>,</CommaToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </OpenRangeNumericQuantifier>
                        </Sequence>
                        <CloseParenToken />
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Diagnostics>
                    <Diagnostic Message="{{FeaturesResources.Not_enough_close_parens}}" Span="[25..25)" Text="" />
                  </Diagnostics>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="((\w+(\s?)){2,}" />
                    <Capture Name="1" Span="[10..25)" Text="((\w+(\s?)){2,}" />
                    <Capture Name="2" Span="[11..21)" Text="(\w+(\s?))" />
                    <Capture Name="3" Span="[15..20)" Text="(\s?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest16()
        {
            Test("""
                @"[a-z-[djp]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <Text>
                                  <TextToken>djp</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="[a-z-[djp]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest17()
        {
            Test("""
                @"^[^<>]*(((?'Open'<)[^<>]*)+((?'Close-Open'>)[^<>]*)+)*(?(Open)(?!))$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <ZeroOrMoreQuantifier>
                        <NegatedCharacterClass>
                          <OpenBracketToken>[</OpenBracketToken>
                          <CaretToken>^</CaretToken>
                          <Sequence>
                            <Text>
                              <TextToken>&lt;&gt;</TextToken>
                            </Text>
                          </Sequence>
                          <CloseBracketToken>]</CloseBracketToken>
                        </NegatedCharacterClass>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <CaptureGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <QuestionToken>?</QuestionToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <CaptureNameToken value="Open">Open</CaptureNameToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <Sequence>
                                      <Text>
                                        <TextToken>&lt;</TextToken>
                                      </Text>
                                    </Sequence>
                                    <CloseParenToken>)</CloseParenToken>
                                  </CaptureGrouping>
                                  <ZeroOrMoreQuantifier>
                                    <NegatedCharacterClass>
                                      <OpenBracketToken>[</OpenBracketToken>
                                      <CaretToken>^</CaretToken>
                                      <Sequence>
                                        <Text>
                                          <TextToken>&lt;&gt;</TextToken>
                                        </Text>
                                      </Sequence>
                                      <CloseBracketToken>]</CloseBracketToken>
                                    </NegatedCharacterClass>
                                    <AsteriskToken>*</AsteriskToken>
                                  </ZeroOrMoreQuantifier>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <OneOrMoreQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <BalancingGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <QuestionToken>?</QuestionToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <CaptureNameToken value="Close">Close</CaptureNameToken>
                                    <MinusToken>-</MinusToken>
                                    <CaptureNameToken value="Open">Open</CaptureNameToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <Sequence>
                                      <Text>
                                        <TextToken>&gt;</TextToken>
                                      </Text>
                                    </Sequence>
                                    <CloseParenToken>)</CloseParenToken>
                                  </BalancingGrouping>
                                  <ZeroOrMoreQuantifier>
                                    <NegatedCharacterClass>
                                      <OpenBracketToken>[</OpenBracketToken>
                                      <CaretToken>^</CaretToken>
                                      <Sequence>
                                        <Text>
                                          <TextToken>&lt;&gt;</TextToken>
                                        </Text>
                                      </Sequence>
                                      <CloseBracketToken>]</CloseBracketToken>
                                    </NegatedCharacterClass>
                                    <AsteriskToken>*</AsteriskToken>
                                  </ZeroOrMoreQuantifier>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ConditionalCaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OpenParenToken>(</OpenParenToken>
                        <CaptureNameToken value="Open">Open</CaptureNameToken>
                        <CloseParenToken>)</CloseParenToken>
                        <Sequence>
                          <NegativeLookaheadGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <QuestionToken>?</QuestionToken>
                            <ExclamationToken>!</ExclamationToken>
                            <Sequence />
                            <CloseParenToken>)</CloseParenToken>
                          </NegativeLookaheadGrouping>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </ConditionalCaptureGrouping>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..78)" Text="^[^&lt;&gt;]*(((?'Open'&lt;)[^&lt;&gt;]*)+((?'Close-Open'&gt;)[^&lt;&gt;]*)+)*(?(Open)(?!))$" />
                    <Capture Name="1" Span="[17..63)" Text="(((?'Open'&lt;)[^&lt;&gt;]*)+((?'Close-Open'&gt;)[^&lt;&gt;]*)+)" />
                    <Capture Name="2" Span="[18..36)" Text="((?'Open'&lt;)[^&lt;&gt;]*)" />
                    <Capture Name="3" Span="[37..61)" Text="((?'Close-Open'&gt;)[^&lt;&gt;]*)" />
                    <Capture Name="4" Span="[19..29)" Text="(?'Open'&lt;)" />
                    <Capture Name="5" Span="[38..54)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Close" Span="[38..54)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Open" Span="[19..29)" Text="(?'Open'&lt;)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None, allowIndexOutOfRange: true);
        }
 
        [Fact]
        public void ReferenceTest18()
        {
            Test("""
                @"((?'Close-Open'>)[^<>]*)+"
                """, $"""
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <BalancingGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <SingleQuoteToken>'</SingleQuoteToken>
                              <CaptureNameToken value="Close">Close</CaptureNameToken>
                              <MinusToken>-</MinusToken>
                              <CaptureNameToken value="Open">Open</CaptureNameToken>
                              <SingleQuoteToken>'</SingleQuoteToken>
                              <Sequence>
                                <Text>
                                  <TextToken>&gt;</TextToken>
                                </Text>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </BalancingGrouping>
                            <ZeroOrMoreQuantifier>
                              <NegatedCharacterClass>
                                <OpenBracketToken>[</OpenBracketToken>
                                <CaretToken>^</CaretToken>
                                <Sequence>
                                  <Text>
                                    <TextToken>&lt;&gt;</TextToken>
                                  </Text>
                                </Sequence>
                                <CloseBracketToken>]</CloseBracketToken>
                              </NegatedCharacterClass>
                              <AsteriskToken>*</AsteriskToken>
                            </ZeroOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Diagnostics>
                    <Diagnostic Message="{string.Format(FeaturesResources.Reference_to_undefined_group_name_0, "Open")}" Span="[20..24)" Text="Open" />
                  </Diagnostics>
                  <Captures>
                    <Capture Name="0" Span="[10..35)" Text="((?'Close-Open'&gt;)[^&lt;&gt;]*)+" />
                    <Capture Name="1" Span="[10..34)" Text="((?'Close-Open'&gt;)[^&lt;&gt;]*)" />
                    <Capture Name="2" Span="[11..27)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Close" Span="[11..27)" Text="(?'Close-Open'&gt;)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None, allowIndexOutOfRange: true);
        }
 
        [Fact]
        public void ReferenceTest19()
        {
            Test("""
                @"(\w)\1+.\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <OneOrMoreQuantifier>
                        <BackreferenceEscape>
                          <BackslashToken>\</BackslashToken>
                          <NumberToken value="1">1</NumberToken>
                        </BackreferenceEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <Wildcard>
                        <DotToken>.</DotToken>
                      </Wildcard>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="(\w)\1+.\b" />
                    <Capture Name="1" Span="[10..14)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest20()
        {
            Test("""
                @"\d{4}\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="4">4</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="\d{4}\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest21()
        {
            Test("""
                @"\d{1,2},"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ClosedRangeNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                      <Text>
                        <TextToken>,</TextToken>
                      </Text>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..18)" Text="\d{1,2}," />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest22()
        {
            Test("""
                @"(?<!(Saturday|Sunday) )\b\w+ \d{1,2}, \d{4}\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegativeLookbehindGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <ExclamationToken>!</ExclamationToken>
                        <Sequence>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Alternation>
                              <Sequence>
                                <Text>
                                  <TextToken>Saturday</TextToken>
                                </Text>
                              </Sequence>
                              <BarToken>|</BarToken>
                              <Sequence>
                                <Text>
                                  <TextToken>Sunday</TextToken>
                                </Text>
                              </Sequence>
                            </Alternation>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <Text>
                            <TextToken> </TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NegativeLookbehindGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <Text>
                        <TextToken> </TextToken>
                      </Text>
                      <ClosedRangeNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                      <Text>
                        <TextToken>, </TextToken>
                      </Text>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="4">4</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..55)" Text="(?&lt;!(Saturday|Sunday) )\b\w+ \d{1,2}, \d{4}\b" />
                    <Capture Name="1" Span="[14..31)" Text="(Saturday|Sunday)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest23()
        {
            Test("""
                @"(?<=\b20)\d{2}\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <PositiveLookbehindGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <EqualsToken>=</EqualsToken>
                        <Sequence>
                          <AnchorEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>b</TextToken>
                          </AnchorEscape>
                          <Text>
                            <TextToken>20</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </PositiveLookbehindGrouping>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="(?&lt;=\b20)\d{2}\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest24()
        {
            Test("""
                @"\b\w+\b(?!\p{P})"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <NegativeLookaheadGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <ExclamationToken>!</ExclamationToken>
                        <Sequence>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>P</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NegativeLookaheadGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="\b\w+\b(?!\p{P})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest25()
        {
            Test("""
                @"(((?'Open'<)[^<>]*)+((?'Close-Open'>)[^<>]*)+)*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <CaptureGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <QuestionToken>?</QuestionToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <CaptureNameToken value="Open">Open</CaptureNameToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <Sequence>
                                      <Text>
                                        <TextToken>&lt;</TextToken>
                                      </Text>
                                    </Sequence>
                                    <CloseParenToken>)</CloseParenToken>
                                  </CaptureGrouping>
                                  <ZeroOrMoreQuantifier>
                                    <NegatedCharacterClass>
                                      <OpenBracketToken>[</OpenBracketToken>
                                      <CaretToken>^</CaretToken>
                                      <Sequence>
                                        <Text>
                                          <TextToken>&lt;&gt;</TextToken>
                                        </Text>
                                      </Sequence>
                                      <CloseBracketToken>]</CloseBracketToken>
                                    </NegatedCharacterClass>
                                    <AsteriskToken>*</AsteriskToken>
                                  </ZeroOrMoreQuantifier>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <OneOrMoreQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <BalancingGrouping>
                                    <OpenParenToken>(</OpenParenToken>
                                    <QuestionToken>?</QuestionToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <CaptureNameToken value="Close">Close</CaptureNameToken>
                                    <MinusToken>-</MinusToken>
                                    <CaptureNameToken value="Open">Open</CaptureNameToken>
                                    <SingleQuoteToken>'</SingleQuoteToken>
                                    <Sequence>
                                      <Text>
                                        <TextToken>&gt;</TextToken>
                                      </Text>
                                    </Sequence>
                                    <CloseParenToken>)</CloseParenToken>
                                  </BalancingGrouping>
                                  <ZeroOrMoreQuantifier>
                                    <NegatedCharacterClass>
                                      <OpenBracketToken>[</OpenBracketToken>
                                      <CaretToken>^</CaretToken>
                                      <Sequence>
                                        <Text>
                                          <TextToken>&lt;&gt;</TextToken>
                                        </Text>
                                      </Sequence>
                                      <CloseBracketToken>]</CloseBracketToken>
                                    </NegatedCharacterClass>
                                    <AsteriskToken>*</AsteriskToken>
                                  </ZeroOrMoreQuantifier>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..57)" Text="(((?'Open'&lt;)[^&lt;&gt;]*)+((?'Close-Open'&gt;)[^&lt;&gt;]*)+)*" />
                    <Capture Name="1" Span="[10..56)" Text="(((?'Open'&lt;)[^&lt;&gt;]*)+((?'Close-Open'&gt;)[^&lt;&gt;]*)+)" />
                    <Capture Name="2" Span="[11..29)" Text="((?'Open'&lt;)[^&lt;&gt;]*)" />
                    <Capture Name="3" Span="[30..54)" Text="((?'Close-Open'&gt;)[^&lt;&gt;]*)" />
                    <Capture Name="4" Span="[12..22)" Text="(?'Open'&lt;)" />
                    <Capture Name="5" Span="[31..47)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Close" Span="[31..47)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Open" Span="[12..22)" Text="(?'Open'&lt;)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None, allowIndexOutOfRange: true);
        }
 
        [Fact]
        public void ReferenceTest26()
        {
            Test("""
                @"\b(?!un)\w+\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <NegativeLookaheadGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <ExclamationToken>!</ExclamationToken>
                        <Sequence>
                          <Text>
                            <TextToken>un</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NegativeLookaheadGrouping>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="\b(?!un)\w+\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest27()
        {
            Test("""
                @"\b(?ix: d \w+)\s"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <NestedOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>ix</OptionsToken>
                        <ColonToken>:</ColonToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <WhitespaceTrivia> </WhitespaceTrivia>
                              </Trivia>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>
                                <Trivia>
                                  <WhitespaceTrivia> </WhitespaceTrivia>
                                </Trivia>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NestedOptionsGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="\b(?ix: d \w+)\s" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest28()
        {
            Test("""
                @"(?:\w+)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NonCapturingGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <ColonToken>:</ColonToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NonCapturingGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="(?:\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest29()
        {
            Test("""
                @"(?:\b(?:\w+)\W*)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <NonCapturingGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <ColonToken>:</ColonToken>
                          <Sequence>
                            <AnchorEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>b</TextToken>
                            </AnchorEscape>
                            <NonCapturingGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <ColonToken>:</ColonToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </NonCapturingGrouping>
                            <ZeroOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>W</TextToken>
                              </CharacterClassEscape>
                              <AsteriskToken>*</AsteriskToken>
                            </ZeroOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </NonCapturingGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="(?:\b(?:\w+)\W*)+" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest30()
        {
            Test("""
                @"(?:\b(?:\w+)\W*)+\."
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <NonCapturingGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <ColonToken>:</ColonToken>
                          <Sequence>
                            <AnchorEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>b</TextToken>
                            </AnchorEscape>
                            <NonCapturingGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <ColonToken>:</ColonToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </NonCapturingGrouping>
                            <ZeroOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>W</TextToken>
                              </CharacterClassEscape>
                              <AsteriskToken>*</AsteriskToken>
                            </ZeroOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </NonCapturingGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <SimpleEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>.</TextToken>
                      </SimpleEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..29)" Text="(?:\b(?:\w+)\W*)+\." />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest31()
        {
            Test("""
                @"(?'Close-Open'>)"
                """, $"""
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <BalancingGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <SingleQuoteToken>'</SingleQuoteToken>
                        <CaptureNameToken value="Close">Close</CaptureNameToken>
                        <MinusToken>-</MinusToken>
                        <CaptureNameToken value="Open">Open</CaptureNameToken>
                        <SingleQuoteToken>'</SingleQuoteToken>
                        <Sequence>
                          <Text>
                            <TextToken>&gt;</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </BalancingGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Diagnostics>
                    <Diagnostic Message="{string.Format(FeaturesResources.Reference_to_undefined_group_name_0, "Open")}" Span="[19..23)" Text="Open" />
                  </Diagnostics>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="1" Span="[10..26)" Text="(?'Close-Open'&gt;)" />
                    <Capture Name="Close" Span="[10..26)" Text="(?'Close-Open'&gt;)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None, allowIndexOutOfRange: true);
        }
 
        [Fact]
        public void ReferenceTest32()
        {
            Test("""
                @"[^<>]*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrMoreQuantifier>
                        <NegatedCharacterClass>
                          <OpenBracketToken>[</OpenBracketToken>
                          <CaretToken>^</CaretToken>
                          <Sequence>
                            <Text>
                              <TextToken>&lt;&gt;</TextToken>
                            </Text>
                          </Sequence>
                          <CloseBracketToken>]</CloseBracketToken>
                        </NegatedCharacterClass>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="[^&lt;&gt;]*" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest33()
        {
            Test("""
                @"\b\w+(?=\sis\b)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <PositiveLookaheadGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <EqualsToken>=</EqualsToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>s</TextToken>
                          </CharacterClassEscape>
                          <Text>
                            <TextToken>is</TextToken>
                          </Text>
                          <AnchorEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>b</TextToken>
                          </AnchorEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </PositiveLookaheadGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="\b\w+(?=\sis\b)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest34()
        {
            Test("""
                @"[a-z-[m]]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <CharacterClassSubtraction>
                            <MinusToken>-</MinusToken>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <Text>
                                  <TextToken>m</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </CharacterClassSubtraction>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="[a-z-[m]]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest35()
        {
            Test("""
                @"^\D\d{1,5}\D*$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>D</TextToken>
                      </CharacterClassEscape>
                      <ClosedRangeNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="5">5</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>D</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="^\D\d{1,5}\D*$" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest36()
        {
            Test("""
                @"[^0-9]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>0</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>9</TextToken>
                            </Text>
                          </CharacterClassRange>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="[^0-9]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest37()
        {
            Test("""
                @"(\p{IsGreek}+(\s)?)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CategoryEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>p</TextToken>
                                <OpenBraceToken>{</OpenBraceToken>
                                <EscapeCategoryToken>IsGreek</EscapeCategoryToken>
                                <CloseBraceToken>}</CloseBraceToken>
                              </CategoryEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>s</TextToken>
                                  </CharacterClassEscape>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..30)" Text="(\p{IsGreek}+(\s)?)+" />
                    <Capture Name="1" Span="[10..29)" Text="(\p{IsGreek}+(\s)?)" />
                    <Capture Name="2" Span="[23..27)" Text="(\s)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest38()
        {
            Test("""
                @"\b(\p{IsGreek}+(\s)?)+\p{Pd}\s(\p{IsBasicLatin}+(\s)?)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CategoryEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>p</TextToken>
                                <OpenBraceToken>{</OpenBraceToken>
                                <EscapeCategoryToken>IsGreek</EscapeCategoryToken>
                                <CloseBraceToken>}</CloseBraceToken>
                              </CategoryEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>s</TextToken>
                                  </CharacterClassEscape>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CategoryEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>p</TextToken>
                        <OpenBraceToken>{</OpenBraceToken>
                        <EscapeCategoryToken>Pd</EscapeCategoryToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </CategoryEscape>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CategoryEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>p</TextToken>
                                <OpenBraceToken>{</OpenBraceToken>
                                <EscapeCategoryToken>IsBasicLatin</EscapeCategoryToken>
                                <CloseBraceToken>}</CloseBraceToken>
                              </CategoryEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <Sequence>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>s</TextToken>
                                  </CharacterClassEscape>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </SimpleGrouping>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..65)" Text="\b(\p{IsGreek}+(\s)?)+\p{Pd}\s(\p{IsBasicLatin}+(\s)?)+" />
                    <Capture Name="1" Span="[12..31)" Text="(\p{IsGreek}+(\s)?)" />
                    <Capture Name="2" Span="[25..29)" Text="(\s)" />
                    <Capture Name="3" Span="[40..64)" Text="(\p{IsBasicLatin}+(\s)?)" />
                    <Capture Name="4" Span="[58..62)" Text="(\s)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest39()
        {
            Test("""
                @"\b.*[.?!;:](\s|\z)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrMoreQuantifier>
                        <Wildcard>
                          <DotToken>.</DotToken>
                        </Wildcard>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken>.?!;:</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Alternation>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <AnchorEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>z</TextToken>
                            </AnchorEscape>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..28)" Text="\b.*[.?!;:](\s|\z)" />
                    <Capture Name="1" Span="[21..28)" Text="(\s|\z)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest40()
        {
            Test("""
                @"^.+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <OneOrMoreQuantifier>
                        <Wildcard>
                          <DotToken>.</DotToken>
                        </Wildcard>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..13)" Text="^.+" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest41()
        {
            Test("""
                @"[^o]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <Text>
                            <TextToken>o</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..14)" Text="[^o]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest42()
        {
            Test("""
                @"\bth[^o]\w+\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>th</TextToken>
                      </Text>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <Text>
                            <TextToken>o</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="\bth[^o]\w+\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest43()
        {
            Test("""
                @"(\P{Sc})+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CategoryEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>P</TextToken>
                              <OpenBraceToken>{</OpenBraceToken>
                              <EscapeCategoryToken>Sc</EscapeCategoryToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </CategoryEscape>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="(\P{Sc})+" />
                    <Capture Name="1" Span="[10..18)" Text="(\P{Sc})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest44()
        {
            Test("""
                @"[^\p{P}\d]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>P</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>d</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="[^\p{P}\d]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest45()
        {
            Test("""
                @"\b[A-Z]\w*\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>A</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>Z</TextToken>
                            </Text>
                          </CharacterClassRange>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..22)" Text="\b[A-Z]\w*\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest46()
        {
            Test("""
                @"\S+?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <LazyQuantifier>
                        <OneOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>S</TextToken>
                          </CharacterClassEscape>
                          <PlusToken>+</PlusToken>
                        </OneOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..14)" Text="\S+?" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest47()
        {
            Test("""
                @"y\s"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <Text>
                        <TextToken>y</TextToken>
                      </Text>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..13)" Text="y\s" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest48()
        {
            Test("""
                @"gr[ae]y\s\S+?[\s\p{P}]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <Text>
                        <TextToken>gr</TextToken>
                      </Text>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken>ae</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <Text>
                        <TextToken>y</TextToken>
                      </Text>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <LazyQuantifier>
                        <OneOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>S</TextToken>
                          </CharacterClassEscape>
                          <PlusToken>+</PlusToken>
                        </OneOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>s</TextToken>
                          </CharacterClassEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>P</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..32)" Text="gr[ae]y\s\S+?[\s\p{P}]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest49()
        {
            Test("""
                @"[\s\p{P}]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>s</TextToken>
                          </CharacterClassEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>P</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="[\s\p{P}]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest50()
        {
            Test("""
                @"[\p{P}\d]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>P</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>d</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="[\p{P}\d]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest51()
        {
            Test("""
                @"[^aeiou]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <Text>
                            <TextToken>aeiou</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..18)" Text="[^aeiou]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest52()
        {
            Test("""
                @"(\w)\1"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <BackreferenceEscape>
                        <BackslashToken>\</BackslashToken>
                        <NumberToken value="1">1</NumberToken>
                      </BackreferenceEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="(\w)\1" />
                    <Capture Name="1" Span="[10..14)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest53()
        {
            Test("""
                @"[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}] "
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Ll</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Lu</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Lt</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Lo</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Nd</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Pc</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Lm</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                      <Text>
                        <TextToken> </TextToken>
                      </Text>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..56)" Text="[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}] " />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest54()
        {
            Test("""
                @"[^a-zA-Z_0-9]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>A</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>Z</TextToken>
                            </Text>
                          </CharacterClassRange>
                          <Text>
                            <TextToken>_</TextToken>
                          </Text>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>0</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>9</TextToken>
                            </Text>
                          </CharacterClassRange>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="[^a-zA-Z_0-9]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest55()
        {
            Test("""
                @"\P{Nd}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CategoryEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>P</TextToken>
                        <OpenBraceToken>{</OpenBraceToken>
                        <EscapeCategoryToken>Nd</EscapeCategoryToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </CategoryEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="\P{Nd}" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest56()
        {
            Test("""
                @"(\(?\d{3}\)?[\s-])?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrOneQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <ZeroOrOneQuantifier>
                              <SimpleEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>(</TextToken>
                              </SimpleEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="3">3</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>)</TextToken>
                              </SimpleEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>s</TextToken>
                                </CharacterClassEscape>
                                <Text>
                                  <TextToken>-</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..29)" Text="(\(?\d{3}\)?[\s-])?" />
                    <Capture Name="1" Span="[10..28)" Text="(\(?\d{3}\)?[\s-])" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest57()
        {
            Test("""
                @"^(\(?\d{3}\)?[\s-])?\d{3}-\d{4}$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <ZeroOrOneQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <ZeroOrOneQuantifier>
                              <SimpleEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>(</TextToken>
                              </SimpleEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="3">3</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <ZeroOrOneQuantifier>
                              <SimpleEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>)</TextToken>
                              </SimpleEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>s</TextToken>
                                </CharacterClassEscape>
                                <Text>
                                  <TextToken>-</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="3">3</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <Text>
                        <TextToken>-</TextToken>
                      </Text>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="4">4</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..42)" Text="^(\(?\d{3}\)?[\s-])?\d{3}-\d{4}$" />
                    <Capture Name="1" Span="[11..29)" Text="(\(?\d{3}\)?[\s-])" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest58()
        {
            Test("""
                @"[0-9]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>0</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>9</TextToken>
                            </Text>
                          </CharacterClassRange>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..15)" Text="[0-9]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest59()
        {
            Test("""
                @"\p{Nd}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CategoryEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>p</TextToken>
                        <OpenBraceToken>{</OpenBraceToken>
                        <EscapeCategoryToken>Nd</EscapeCategoryToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </CategoryEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="\p{Nd}" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest60()
        {
            Test("""
                @"\b(\S+)\s?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>S</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrOneQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>s</TextToken>
                        </CharacterClassEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="\b(\S+)\s?" />
                    <Capture Name="1" Span="[12..17)" Text="(\S+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest61()
        {
            Test("""
                @"[^ \f\n\r\t\v]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <Text>
                            <TextToken> </TextToken>
                          </Text>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>f</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>n</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>r</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>t</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>v</TextToken>
                          </SimpleEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="[^ \f\n\r\t\v]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest62()
        {
            Test("""
                @"[^\f\n\r\t\v\x85\p{Z}]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <NegatedCharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <CaretToken>^</CaretToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>f</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>n</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>r</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>t</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>v</TextToken>
                          </SimpleEscape>
                          <HexEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>x</TextToken>
                            <TextToken>85</TextToken>
                          </HexEscape>
                          <CategoryEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>p</TextToken>
                            <OpenBraceToken>{</OpenBraceToken>
                            <EscapeCategoryToken>Z</EscapeCategoryToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </CategoryEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </NegatedCharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..32)" Text="[^\f\n\r\t\v\x85\p{Z}]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest63()
        {
            Test("""
                @"(\s|$)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Alternation>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <EndAnchor>
                              <DollarToken>$</DollarToken>
                            </EndAnchor>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="(\s|$)" />
                    <Capture Name="1" Span="[10..16)" Text="(\s|$)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest64()
        {
            Test("""
                @"\b\w+(e)?s(\s|$)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <ZeroOrOneQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <Text>
                              <TextToken>e</TextToken>
                            </Text>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <Text>
                        <TextToken>s</TextToken>
                      </Text>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Alternation>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <EndAnchor>
                              <DollarToken>$</DollarToken>
                            </EndAnchor>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="\b\w+(e)?s(\s|$)" />
                    <Capture Name="1" Span="[15..18)" Text="(e)" />
                    <Capture Name="2" Span="[20..26)" Text="(\s|$)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest65()
        {
            Test("""
                @"[ \f\n\r\t\v]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken> </TextToken>
                          </Text>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>f</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>n</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>r</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>t</TextToken>
                          </SimpleEscape>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>v</TextToken>
                          </SimpleEscape>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="[ \f\n\r\t\v]" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest66()
        {
            Test("""
                @"(\W){1,2}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ClosedRangeNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>W</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="(\W){1,2}" />
                    <Capture Name="1" Span="[10..14)" Text="(\W)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest67()
        {
            Test("""
                @"(\w+)"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..15)" Text="(\w+)" />
                    <Capture Name="1" Span="[10..15)" Text="(\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest68()
        {
            Test("""
                @"\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..12)" Text="\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest69()
        {
            Test("""
                @"\b(\w+)(\W){1,2}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ClosedRangeNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>W</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="\b(\w+)(\W){1,2}" />
                    <Capture Name="1" Span="[12..17)" Text="(\w+)" />
                    <Capture Name="2" Span="[17..21)" Text="(\W)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest70()
        {
            Test("""
                @"(?>(\w)\1+).\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AtomicGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>w</TextToken>
                              </CharacterClassEscape>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <OneOrMoreQuantifier>
                            <BackreferenceEscape>
                              <BackslashToken>\</BackslashToken>
                              <NumberToken value="1">1</NumberToken>
                            </BackreferenceEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </AtomicGrouping>
                      <Wildcard>
                        <DotToken>.</DotToken>
                      </Wildcard>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="(?&gt;(\w)\1+).\b" />
                    <Capture Name="1" Span="[13..17)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest71()
        {
            Test("""
                @"(\b(\w+)\W+)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <AnchorEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>b</TextToken>
                            </AnchorEscape>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>W</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="(\b(\w+)\W+)+" />
                    <Capture Name="1" Span="[10..22)" Text="(\b(\w+)\W+)" />
                    <Capture Name="2" Span="[13..18)" Text="(\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest72()
        {
            Test("""
                @"(\w)\1+.\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <OneOrMoreQuantifier>
                        <BackreferenceEscape>
                          <BackslashToken>\</BackslashToken>
                          <NumberToken value="1">1</NumberToken>
                        </BackreferenceEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <Wildcard>
                        <DotToken>.</DotToken>
                      </Wildcard>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="(\w)\1+.\b" />
                    <Capture Name="1" Span="[10..14)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest73()
        {
            Test("""
                @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrMoreQuantifier>
                        <CategoryEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>p</TextToken>
                          <OpenBraceToken>{</OpenBraceToken>
                          <EscapeCategoryToken>Sc</EscapeCategoryToken>
                          <CloseBraceToken>}</CloseBraceToken>
                        </CategoryEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ZeroOrOneQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                            <QuestionToken>?</QuestionToken>
                          </ZeroOrOneQuantifier>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                          <ZeroOrOneQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <Text>
                                  <TextToken>.,</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                            <QuestionToken>?</QuestionToken>
                          </ZeroOrOneQuantifier>
                          <ZeroOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <AsteriskToken>*</AsteriskToken>
                          </ZeroOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrMoreQuantifier>
                        <CategoryEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>p</TextToken>
                          <OpenBraceToken>{</OpenBraceToken>
                          <EscapeCategoryToken>Sc</EscapeCategoryToken>
                          <CloseBraceToken>}</CloseBraceToken>
                        </CategoryEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..40)" Text="\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*" />
                    <Capture Name="1" Span="[17..33)" Text="(\s?\d+[.,]?\d*)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest74()
        {
            Test("""
                @"p{Sc}*(?<amount>\s?\d+[.,]?\d*)\p{Sc}*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <Text>
                        <TextToken>p{Sc</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <Text>
                          <TextToken>}</TextToken>
                        </Text>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="amount">amount</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <ZeroOrOneQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                            <QuestionToken>?</QuestionToken>
                          </ZeroOrOneQuantifier>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                          <ZeroOrOneQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <Text>
                                  <TextToken>.,</TextToken>
                                </Text>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                            <QuestionToken>?</QuestionToken>
                          </ZeroOrOneQuantifier>
                          <ZeroOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <AsteriskToken>*</AsteriskToken>
                          </ZeroOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <ZeroOrMoreQuantifier>
                        <CategoryEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>p</TextToken>
                          <OpenBraceToken>{</OpenBraceToken>
                          <EscapeCategoryToken>Sc</EscapeCategoryToken>
                          <CloseBraceToken>}</CloseBraceToken>
                        </CategoryEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..48)" Text="p{Sc}*(?&lt;amount&gt;\s?\d+[.,]?\d*)\p{Sc}*" />
                    <Capture Name="1" Span="[16..41)" Text="(?&lt;amount&gt;\s?\d+[.,]?\d*)" />
                    <Capture Name="amount" Span="[16..41)" Text="(?&lt;amount&gt;\s?\d+[.,]?\d*)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest75()
        {
            Test("""
                @"^(\w+\s?)+$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>w</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="^(\w+\s?)+$" />
                    <Capture Name="1" Span="[11..19)" Text="(\w+\s?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest76()
        {
            Test("""
                @"(?ix) d \w+ \s"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>ix</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <Text>
                        <TextToken>
                          <Trivia>
                            <WhitespaceTrivia> </WhitespaceTrivia>
                          </Trivia>d</TextToken>
                      </Text>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>
                            <Trivia>
                              <WhitespaceTrivia> </WhitespaceTrivia>
                            </Trivia>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClassEscape>
                        <BackslashToken>
                          <Trivia>
                            <WhitespaceTrivia> </WhitespaceTrivia>
                          </Trivia>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="(?ix) d \w+ \s" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest77()
        {
            Test("""
                @"\b(?ix: d \w+)\s"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <NestedOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>ix</OptionsToken>
                        <ColonToken>:</ColonToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <WhitespaceTrivia> </WhitespaceTrivia>
                              </Trivia>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>
                                <Trivia>
                                  <WhitespaceTrivia> </WhitespaceTrivia>
                                </Trivia>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NestedOptionsGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..26)" Text="\b(?ix: d \w+)\s" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest78()
        {
            Test("""
                @"\bthe\w*\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>the</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..20)" Text="\bthe\w*\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest79()
        {
            Test("""
                @"\b(?i:t)he\w*\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <NestedOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>i</OptionsToken>
                        <ColonToken>:</ColonToken>
                        <Sequence>
                          <Text>
                            <TextToken>t</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </NestedOptionsGrouping>
                      <Text>
                        <TextToken>he</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="\b(?i:t)he\w*\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest80()
        {
            Test("""
                @"^(\w+)\s(\d+)$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="^(\w+)\s(\d+)$" />
                    <Capture Name="1" Span="[11..16)" Text="(\w+)" />
                    <Capture Name="2" Span="[18..23)" Text="(\d+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest81()
        {
            Test("""
                @"^(\w+)\s(\d+)\r*$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrMoreQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>r</TextToken>
                        </SimpleEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="^(\w+)\s(\d+)\r*$" />
                    <Capture Name="1" Span="[11..16)" Text="(\w+)" />
                    <Capture Name="2" Span="[18..23)" Text="(\d+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.Multiline);
        }
 
        [Fact]
        public void ReferenceTest82()
        {
            Test("""
                @"(?m)^(\w+)\s(\d+)\r*$"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>m</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrMoreQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>r</TextToken>
                        </SimpleEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <EndAnchor>
                        <DollarToken>$</DollarToken>
                      </EndAnchor>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..31)" Text="(?m)^(\w+)\s(\d+)\r*$" />
                    <Capture Name="1" Span="[15..20)" Text="(\w+)" />
                    <Capture Name="2" Span="[22..27)" Text="(\d+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.Multiline);
        }
 
        [Fact]
        public void ReferenceTest83()
        {
            Test("""
                @"(?s)^.+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>s</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <OneOrMoreQuantifier>
                        <Wildcard>
                          <DotToken>.</DotToken>
                        </Wildcard>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="(?s)^.+" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest84()
        {
            Test("""
                @"\b(\d{2}-)*(?(1)\d{7}|\d{3}-\d{2}-\d{4})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ConditionalCaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OpenParenToken>(</OpenParenToken>
                        <NumberToken value="1">1</NumberToken>
                        <CloseParenToken>)</CloseParenToken>
                        <Alternation>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="7">7</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="3">3</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="4">4</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </ConditionalCaptureGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..52)" Text="\b(\d{2}-)*(?(1)\d{7}|\d{3}-\d{2}-\d{4})\b" />
                    <Capture Name="1" Span="[12..20)" Text="(\d{2}-)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest85()
        {
            Test("""
                @"\b\(?((\w+),?\s?)+[\.!?]\)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..37)" Text="\b\(?((\w+),?\s?)+[\.!?]\)?" />
                    <Capture Name="1" Span="[15..27)" Text="((\w+),?\s?)" />
                    <Capture Name="2" Span="[16..21)" Text="(\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest86()
        {
            Test("""
                @"(?n)\b\(?((?>\w+),?\s?)+[\.!?]\)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>n</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <AtomicGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </AtomicGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..43)" Text="(?n)\b\(?((?&gt;\w+),?\s?)+[\.!?]\)?" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest87()
        {
            Test("""
                @"\b\(?(?n:(?>\w+),?\s?)+[\.!?]\)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <NestedOptionsGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <OptionsToken>n</OptionsToken>
                          <ColonToken>:</ColonToken>
                          <Sequence>
                            <AtomicGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </AtomicGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </NestedOptionsGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..42)" Text="\b\(?(?n:(?&gt;\w+),?\s?)+[\.!?]\)?" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest88()
        {
            Test("""
                @"\b\(?((?>\w+),?\s?)+[\.!?]\)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <AtomicGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </AtomicGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..39)" Text="\b\(?((?&gt;\w+),?\s?)+[\.!?]\)?" />
                    <Capture Name="1" Span="[15..29)" Text="((?&gt;\w+),?\s?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.IgnorePatternWhitespace);
        }
 
        [Fact]
        public void ReferenceTest89()
        {
            Test("""
                @"(?x)\b \(? ( (?>\w+) ,?\s? )+  [\.!?] \)? # Matches an entire sentence."
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>x</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>
                            <Trivia>
                              <WhitespaceTrivia> </WhitespaceTrivia>
                            </Trivia>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>
                            <Trivia>
                              <WhitespaceTrivia> </WhitespaceTrivia>
                            </Trivia>(</OpenParenToken>
                          <Sequence>
                            <AtomicGrouping>
                              <OpenParenToken>
                                <Trivia>
                                  <WhitespaceTrivia> </WhitespaceTrivia>
                                </Trivia>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </AtomicGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>
                                  <Trivia>
                                    <WhitespaceTrivia> </WhitespaceTrivia>
                                  </Trivia>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>
                            <Trivia>
                              <WhitespaceTrivia> </WhitespaceTrivia>
                            </Trivia>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>
                          <Trivia>
                            <WhitespaceTrivia>  </WhitespaceTrivia>
                          </Trivia>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>
                            <Trivia>
                              <WhitespaceTrivia> </WhitespaceTrivia>
                            </Trivia>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile>
                      <Trivia>
                        <WhitespaceTrivia> </WhitespaceTrivia>
                        <CommentTrivia># Matches an entire sentence.</CommentTrivia>
                      </Trivia>
                    </EndOfFile>
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..81)" Text="(?x)\b \(? ( (?&gt;\w+) ,?\s? )+  [\.!?] \)? # Matches an entire sentence." />
                    <Capture Name="1" Span="[21..38)" Text="( (?&gt;\w+) ,?\s? )" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest90()
        {
            Test("""
                @"\bb\w+\s"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>b</TextToken>
                      </Text>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..18)" Text="\bb\w+\s" />
                  </Captures>
                </Tree>
                """, RegexOptions.RightToLeft);
        }
 
        [Fact]
        public void ReferenceTest91()
        {
            Test("""
                @"(?<=\d{1,2}\s)\w+,?\s\d{4}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <PositiveLookbehindGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <EqualsToken>=</EqualsToken>
                        <Sequence>
                          <ClosedRangeNumericQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>d</TextToken>
                            </CharacterClassEscape>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="1">1</NumberToken>
                            <CommaToken>,</CommaToken>
                            <NumberToken value="2">2</NumberToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </ClosedRangeNumericQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>s</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </PositiveLookbehindGrouping>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>w</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <ZeroOrOneQuantifier>
                        <Text>
                          <TextToken>,</TextToken>
                        </Text>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="4">4</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..36)" Text="(?&lt;=\d{1,2}\s)\w+,?\s\d{4}" />
                  </Captures>
                </Tree>
                """, RegexOptions.RightToLeft);
        }
 
        [Fact]
        public void ReferenceTest92()
        {
            Test("""
                @"\b(\w+\s*)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>w</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                            <ZeroOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <AsteriskToken>*</AsteriskToken>
                            </ZeroOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="\b(\w+\s*)+" />
                    <Capture Name="1" Span="[12..20)" Text="(\w+\s*)" />
                  </Captures>
                </Tree>
                """, RegexOptions.ECMAScript);
        }
 
        [Fact]
        public void ReferenceTest93()
        {
            Test("""
                @"((a+)(\1) ?)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <Text>
                                    <TextToken>a</TextToken>
                                  </Text>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <BackreferenceEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <NumberToken value="1">1</NumberToken>
                                </BackreferenceEscape>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken> </TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="((a+)(\1) ?)+" />
                    <Capture Name="1" Span="[10..22)" Text="((a+)(\1) ?)" />
                    <Capture Name="2" Span="[11..15)" Text="(a+)" />
                    <Capture Name="3" Span="[15..19)" Text="(\1)" />
                  </Captures>
                </Tree>
                """, RegexOptions.ECMAScript);
        }
 
        [Fact]
        public void ReferenceTest94()
        {
            Test("""
                @"\b(D\w+)\s(d\w+)\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>D</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..28)" Text="\b(D\w+)\s(d\w+)\b" />
                    <Capture Name="1" Span="[12..18)" Text="(D\w+)" />
                    <Capture Name="2" Span="[20..26)" Text="(d\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest95()
        {
            Test("""
                @"\b(D\w+)(?ixn) \s (d\w+) \b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>D</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>ixn</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>
                          <Trivia>
                            <WhitespaceTrivia> </WhitespaceTrivia>
                          </Trivia>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>
                          <Trivia>
                            <WhitespaceTrivia> </WhitespaceTrivia>
                          </Trivia>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>
                          <Trivia>
                            <WhitespaceTrivia> </WhitespaceTrivia>
                          </Trivia>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..37)" Text="\b(D\w+)(?ixn) \s (d\w+) \b" />
                    <Capture Name="1" Span="[12..18)" Text="(D\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest96()
        {
            Test("""
                @"\b((?# case-sensitive comparison)D\w+)\s((?#case-insensitive comparison)d\w+)\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <CommentTrivia>(?# case-sensitive comparison)</CommentTrivia>
                              </Trivia>D</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <CommentTrivia>(?#case-insensitive comparison)</CommentTrivia>
                              </Trivia>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..89)" Text="\b((?# case-sensitive comparison)D\w+)\s((?#case-insensitive comparison)d\w+)\b" />
                    <Capture Name="1" Span="[12..48)" Text="((?# case-sensitive comparison)D\w+)" />
                    <Capture Name="2" Span="[50..87)" Text="((?#case-insensitive comparison)d\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest97()
        {
            Test("""
                @"\b\(?((?>\w+),?\s?)+[\.!?]\)?"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>(</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <AtomicGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <QuestionToken>?</QuestionToken>
                              <GreaterThanToken>&gt;</GreaterThanToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </AtomicGrouping>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>,</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                            <ZeroOrOneQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>s</TextToken>
                              </CharacterClassEscape>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>.</TextToken>
                          </SimpleEscape>
                          <Text>
                            <TextToken>!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ZeroOrOneQuantifier>
                        <SimpleEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>)</TextToken>
                        </SimpleEscape>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..39)" Text="\b\(?((?&gt;\w+),?\s?)+[\.!?]\)?" />
                    <Capture Name="1" Span="[15..29)" Text="((?&gt;\w+),?\s?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest98()
        {
            Test("""
                @"\b(?<n2>\d{2}-)*(?(n2)\d{7}|\d{3}-\d{2}-\d{4})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <ZeroOrMoreQuantifier>
                        <CaptureGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <LessThanToken>&lt;</LessThanToken>
                          <CaptureNameToken value="n2">n2</CaptureNameToken>
                          <GreaterThanToken>&gt;</GreaterThanToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </CaptureGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ConditionalCaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OpenParenToken>(</OpenParenToken>
                        <CaptureNameToken value="n2">n2</CaptureNameToken>
                        <CloseParenToken>)</CloseParenToken>
                        <Alternation>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="7">7</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="3">3</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="4">4</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </ConditionalCaptureGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..58)" Text="\b(?&lt;n2&gt;\d{2}-)*(?(n2)\d{7}|\d{3}-\d{2}-\d{4})\b" />
                    <Capture Name="1" Span="[12..25)" Text="(?&lt;n2&gt;\d{2}-)" />
                    <Capture Name="n2" Span="[12..25)" Text="(?&lt;n2&gt;\d{2}-)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest99()
        {
            Test("""
                @"\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Alternation>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="7">7</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="3">3</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                            <Text>
                              <TextToken>-</TextToken>
                            </Text>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="4">4</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..45)" Text="\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b" />
                    <Capture Name="1" Span="[12..43)" Text="(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest100()
        {
            Test("""
                @"\bgr(a|e)y\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>gr</TextToken>
                      </Text>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Alternation>
                          <Sequence>
                            <Text>
                              <TextToken>a</TextToken>
                            </Text>
                          </Sequence>
                          <BarToken>|</BarToken>
                          <Sequence>
                            <Text>
                              <TextToken>e</TextToken>
                            </Text>
                          </Sequence>
                        </Alternation>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <Text>
                        <TextToken>y</TextToken>
                      </Text>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..22)" Text="\bgr(a|e)y\b" />
                    <Capture Name="1" Span="[14..19)" Text="(a|e)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest101()
        {
            Test("""
                @"(?>(\w)\1+).\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AtomicGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>w</TextToken>
                              </CharacterClassEscape>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <OneOrMoreQuantifier>
                            <BackreferenceEscape>
                              <BackslashToken>\</BackslashToken>
                              <NumberToken value="1">1</NumberToken>
                            </BackreferenceEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </AtomicGrouping>
                      <Wildcard>
                        <DotToken>.</DotToken>
                      </Wildcard>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="(?&gt;(\w)\1+).\b" />
                    <Capture Name="1" Span="[13..17)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest102()
        {
            Test("""
                @"(\b(\w+)\W+)+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <OneOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <AnchorEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>b</TextToken>
                            </AnchorEscape>
                            <SimpleGrouping>
                              <OpenParenToken>(</OpenParenToken>
                              <Sequence>
                                <OneOrMoreQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <PlusToken>+</PlusToken>
                                </OneOrMoreQuantifier>
                              </Sequence>
                              <CloseParenToken>)</CloseParenToken>
                            </SimpleGrouping>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>W</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="(\b(\w+)\W+)+" />
                    <Capture Name="1" Span="[10..22)" Text="(\b(\w+)\W+)" />
                    <Capture Name="2" Span="[13..18)" Text="(\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest103()
        {
            Test("""
                @"\b91*9*\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>9</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <Text>
                          <TextToken>1</TextToken>
                        </Text>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ZeroOrMoreQuantifier>
                        <Text>
                          <TextToken>9</TextToken>
                        </Text>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..19)" Text="\b91*9*\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest104()
        {
            Test("""
                @"\ban+\w*?\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>a</TextToken>
                      </Text>
                      <OneOrMoreQuantifier>
                        <Text>
                          <TextToken>n</TextToken>
                        </Text>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <LazyQuantifier>
                        <ZeroOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                          <AsteriskToken>*</AsteriskToken>
                        </ZeroOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="\ban+\w*?\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest105()
        {
            Test("""
                @"\ban?\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>a</TextToken>
                      </Text>
                      <ZeroOrOneQuantifier>
                        <Text>
                          <TextToken>n</TextToken>
                        </Text>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..17)" Text="\ban?\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest106()
        {
            Test("""
                @"\b\d+\,\d{3}\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <SimpleEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>,</TextToken>
                      </SimpleEscape>
                      <ExactNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="3">3</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="\b\d+\,\d{3}\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest107()
        {
            Test("""
                @"\b\d{2,}\b\D+"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OpenRangeNumericQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="2">2</NumberToken>
                        <CommaToken>,</CommaToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </OpenRangeNumericQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>D</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="\b\d{2,}\b\D+" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest108()
        {
            Test("""
                @"(00\s){2,4}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ClosedRangeNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <Text>
                              <TextToken>00</TextToken>
                            </Text>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>s</TextToken>
                            </CharacterClassEscape>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="2">2</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="4">4</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="(00\s){2,4}" />
                    <Capture Name="1" Span="[10..16)" Text="(00\s)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest109()
        {
            Test("""
                @"\b\w*?oo\w*?\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <LazyQuantifier>
                        <ZeroOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                          <AsteriskToken>*</AsteriskToken>
                        </ZeroOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <Text>
                        <TextToken>oo</TextToken>
                      </Text>
                      <LazyQuantifier>
                        <ZeroOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                          <AsteriskToken>*</AsteriskToken>
                        </ZeroOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..24)" Text="\b\w*?oo\w*?\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest110()
        {
            Test("""
                @"\b\w+?\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <LazyQuantifier>
                        <OneOrMoreQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                          <PlusToken>+</PlusToken>
                        </OneOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..18)" Text="\b\w+?\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest111()
        {
            Test("""
                @"^\s*(System.)??Console.Write(Line)??\(??"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <StartAnchor>
                        <CaretToken>^</CaretToken>
                      </StartAnchor>
                      <ZeroOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>s</TextToken>
                        </CharacterClassEscape>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <LazyQuantifier>
                        <ZeroOrOneQuantifier>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <Text>
                                <TextToken>System</TextToken>
                              </Text>
                              <Wildcard>
                                <DotToken>.</DotToken>
                              </Wildcard>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <QuestionToken>?</QuestionToken>
                        </ZeroOrOneQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <Text>
                        <TextToken>Console</TextToken>
                      </Text>
                      <Wildcard>
                        <DotToken>.</DotToken>
                      </Wildcard>
                      <Text>
                        <TextToken>Write</TextToken>
                      </Text>
                      <LazyQuantifier>
                        <ZeroOrOneQuantifier>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <Text>
                                <TextToken>Line</TextToken>
                              </Text>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <QuestionToken>?</QuestionToken>
                        </ZeroOrOneQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <LazyQuantifier>
                        <ZeroOrOneQuantifier>
                          <SimpleEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>(</TextToken>
                          </SimpleEscape>
                          <QuestionToken>?</QuestionToken>
                        </ZeroOrOneQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..50)" Text="^\s*(System.)??Console.Write(Line)??\(??" />
                    <Capture Name="1" Span="[14..23)" Text="(System.)" />
                    <Capture Name="2" Span="[38..44)" Text="(Line)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest112()
        {
            Test("""
                @"(System.)??"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <LazyQuantifier>
                        <ZeroOrOneQuantifier>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <Text>
                                <TextToken>System</TextToken>
                              </Text>
                              <Wildcard>
                                <DotToken>.</DotToken>
                              </Wildcard>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <QuestionToken>?</QuestionToken>
                        </ZeroOrOneQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="(System.)??" />
                    <Capture Name="1" Span="[10..19)" Text="(System.)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest113()
        {
            Test("""
                @"\b(\w{3,}?\.){2}?\w{3,}?\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <LazyQuantifier>
                        <ExactNumericQuantifier>
                          <SimpleGrouping>
                            <OpenParenToken>(</OpenParenToken>
                            <Sequence>
                              <LazyQuantifier>
                                <OpenRangeNumericQuantifier>
                                  <CharacterClassEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <TextToken>w</TextToken>
                                  </CharacterClassEscape>
                                  <OpenBraceToken>{</OpenBraceToken>
                                  <NumberToken value="3">3</NumberToken>
                                  <CommaToken>,</CommaToken>
                                  <CloseBraceToken>}</CloseBraceToken>
                                </OpenRangeNumericQuantifier>
                                <QuestionToken>?</QuestionToken>
                              </LazyQuantifier>
                              <SimpleEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>.</TextToken>
                              </SimpleEscape>
                            </Sequence>
                            <CloseParenToken>)</CloseParenToken>
                          </SimpleGrouping>
                          <OpenBraceToken>{</OpenBraceToken>
                          <NumberToken value="2">2</NumberToken>
                          <CloseBraceToken>}</CloseBraceToken>
                        </ExactNumericQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <LazyQuantifier>
                        <OpenRangeNumericQuantifier>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                          <OpenBraceToken>{</OpenBraceToken>
                          <NumberToken value="3">3</NumberToken>
                          <CommaToken>,</CommaToken>
                          <CloseBraceToken>}</CloseBraceToken>
                        </OpenRangeNumericQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..36)" Text="\b(\w{3,}?\.){2}?\w{3,}?\b" />
                    <Capture Name="1" Span="[12..23)" Text="(\w{3,}?\.)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest114()
        {
            Test("""
                @"\b[A-Z](\w*?\s*?){1,10}[.!?]"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <CharacterClassRange>
                            <Text>
                              <TextToken>A</TextToken>
                            </Text>
                            <MinusToken>-</MinusToken>
                            <Text>
                              <TextToken>Z</TextToken>
                            </Text>
                          </CharacterClassRange>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <ClosedRangeNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <LazyQuantifier>
                              <ZeroOrMoreQuantifier>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>w</TextToken>
                                </CharacterClassEscape>
                                <AsteriskToken>*</AsteriskToken>
                              </ZeroOrMoreQuantifier>
                              <QuestionToken>?</QuestionToken>
                            </LazyQuantifier>
                            <LazyQuantifier>
                              <ZeroOrMoreQuantifier>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>s</TextToken>
                                </CharacterClassEscape>
                                <AsteriskToken>*</AsteriskToken>
                              </ZeroOrMoreQuantifier>
                              <QuestionToken>?</QuestionToken>
                            </LazyQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="1">1</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="10">10</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken>.!?</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..38)" Text="\b[A-Z](\w*?\s*?){1,10}[.!?]" />
                    <Capture Name="1" Span="[17..27)" Text="(\w*?\s*?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest115()
        {
            Test("""
                @"b.*([0-9]{4})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <Text>
                        <TextToken>b</TextToken>
                      </Text>
                      <ZeroOrMoreQuantifier>
                        <Wildcard>
                          <DotToken>.</DotToken>
                        </Wildcard>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ExactNumericQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassRange>
                                  <Text>
                                    <TextToken>0</TextToken>
                                  </Text>
                                  <MinusToken>-</MinusToken>
                                  <Text>
                                    <TextToken>9</TextToken>
                                  </Text>
                                </CharacterClassRange>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="4">4</NumberToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </ExactNumericQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..25)" Text="b.*([0-9]{4})\b" />
                    <Capture Name="1" Span="[13..23)" Text="([0-9]{4})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest116()
        {
            Test("""
                @"\b.*?([0-9]{4})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <LazyQuantifier>
                        <ZeroOrMoreQuantifier>
                          <Wildcard>
                            <DotToken>.</DotToken>
                          </Wildcard>
                          <AsteriskToken>*</AsteriskToken>
                        </ZeroOrMoreQuantifier>
                        <QuestionToken>?</QuestionToken>
                      </LazyQuantifier>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ExactNumericQuantifier>
                            <CharacterClass>
                              <OpenBracketToken>[</OpenBracketToken>
                              <Sequence>
                                <CharacterClassRange>
                                  <Text>
                                    <TextToken>0</TextToken>
                                  </Text>
                                  <MinusToken>-</MinusToken>
                                  <Text>
                                    <TextToken>9</TextToken>
                                  </Text>
                                </CharacterClassRange>
                              </Sequence>
                              <CloseBracketToken>]</CloseBracketToken>
                            </CharacterClass>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="4">4</NumberToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </ExactNumericQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="\b.*?([0-9]{4})\b" />
                    <Capture Name="1" Span="[15..25)" Text="([0-9]{4})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest117()
        {
            Test("""
                @"(a?)*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <ZeroOrOneQuantifier>
                              <Text>
                                <TextToken>a</TextToken>
                              </Text>
                              <QuestionToken>?</QuestionToken>
                            </ZeroOrOneQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..15)" Text="(a?)*" />
                    <Capture Name="1" Span="[10..14)" Text="(a?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest118()
        {
            Test("""
                @"(a\1|(?(1)\1)){0,2}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ClosedRangeNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Alternation>
                            <Sequence>
                              <Text>
                                <TextToken>a</TextToken>
                              </Text>
                              <BackreferenceEscape>
                                <BackslashToken>\</BackslashToken>
                                <NumberToken value="1">1</NumberToken>
                              </BackreferenceEscape>
                            </Sequence>
                            <BarToken>|</BarToken>
                            <Sequence>
                              <ConditionalCaptureGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <QuestionToken>?</QuestionToken>
                                <OpenParenToken>(</OpenParenToken>
                                <NumberToken value="1">1</NumberToken>
                                <CloseParenToken>)</CloseParenToken>
                                <Sequence>
                                  <BackreferenceEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <NumberToken value="1">1</NumberToken>
                                  </BackreferenceEscape>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </ConditionalCaptureGrouping>
                            </Sequence>
                          </Alternation>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="0">0</NumberToken>
                        <CommaToken>,</CommaToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ClosedRangeNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..29)" Text="(a\1|(?(1)\1)){0,2}" />
                    <Capture Name="1" Span="[10..24)" Text="(a\1|(?(1)\1))" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest119()
        {
            Test("""
                @"(a\1|(?(1)\1)){2}"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <ExactNumericQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Alternation>
                            <Sequence>
                              <Text>
                                <TextToken>a</TextToken>
                              </Text>
                              <BackreferenceEscape>
                                <BackslashToken>\</BackslashToken>
                                <NumberToken value="1">1</NumberToken>
                              </BackreferenceEscape>
                            </Sequence>
                            <BarToken>|</BarToken>
                            <Sequence>
                              <ConditionalCaptureGrouping>
                                <OpenParenToken>(</OpenParenToken>
                                <QuestionToken>?</QuestionToken>
                                <OpenParenToken>(</OpenParenToken>
                                <NumberToken value="1">1</NumberToken>
                                <CloseParenToken>)</CloseParenToken>
                                <Sequence>
                                  <BackreferenceEscape>
                                    <BackslashToken>\</BackslashToken>
                                    <NumberToken value="1">1</NumberToken>
                                  </BackreferenceEscape>
                                </Sequence>
                                <CloseParenToken>)</CloseParenToken>
                              </ConditionalCaptureGrouping>
                            </Sequence>
                          </Alternation>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <OpenBraceToken>{</OpenBraceToken>
                        <NumberToken value="2">2</NumberToken>
                        <CloseBraceToken>}</CloseBraceToken>
                      </ExactNumericQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="(a\1|(?(1)\1)){2}" />
                    <Capture Name="1" Span="[10..24)" Text="(a\1|(?(1)\1))" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest120()
        {
            Test("""
                @"(\w)\1"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <BackreferenceEscape>
                        <BackslashToken>\</BackslashToken>
                        <NumberToken value="1">1</NumberToken>
                      </BackreferenceEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..16)" Text="(\w)\1" />
                    <Capture Name="1" Span="[10..14)" Text="(\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest121()
        {
            Test("""
                @"(?<char>\w)\k<char>"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="char">char</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <KCaptureEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>k</TextToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <CaptureNameToken value="char">char</CaptureNameToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                      </KCaptureEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..29)" Text="(?&lt;char&gt;\w)\k&lt;char&gt;" />
                    <Capture Name="1" Span="[10..21)" Text="(?&lt;char&gt;\w)" />
                    <Capture Name="char" Span="[10..21)" Text="(?&lt;char&gt;\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest122()
        {
            Test("""
                @"(?<2>\w)\k<2>"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <NumberToken value="2">2</NumberToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <CharacterClassEscape>
                            <BackslashToken>\</BackslashToken>
                            <TextToken>w</TextToken>
                          </CharacterClassEscape>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <KCaptureEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>k</TextToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <NumberToken value="2">2</NumberToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                      </KCaptureEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..23)" Text="(?&lt;2&gt;\w)\k&lt;2&gt;" />
                    <Capture Name="2" Span="[10..18)" Text="(?&lt;2&gt;\w)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest123()
        {
            Test("""
                @"(?<1>a)(?<1>\1b)*"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <CaptureGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <LessThanToken>&lt;</LessThanToken>
                        <NumberToken value="1">1</NumberToken>
                        <GreaterThanToken>&gt;</GreaterThanToken>
                        <Sequence>
                          <Text>
                            <TextToken>a</TextToken>
                          </Text>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </CaptureGrouping>
                      <ZeroOrMoreQuantifier>
                        <CaptureGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <QuestionToken>?</QuestionToken>
                          <LessThanToken>&lt;</LessThanToken>
                          <NumberToken value="1">1</NumberToken>
                          <GreaterThanToken>&gt;</GreaterThanToken>
                          <Sequence>
                            <BackreferenceEscape>
                              <BackslashToken>\</BackslashToken>
                              <NumberToken value="1">1</NumberToken>
                            </BackreferenceEscape>
                            <Text>
                              <TextToken>b</TextToken>
                            </Text>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </CaptureGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..27)" Text="(?&lt;1&gt;a)(?&lt;1&gt;\1b)*" />
                    <Capture Name="1" Span="[10..17)" Text="(?&lt;1&gt;a)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest124()
        {
            Test("""
                @"\b(\p{Lu}{2})(\d{2})?(\p{Lu}{2})\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ExactNumericQuantifier>
                            <CategoryEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>p</TextToken>
                              <OpenBraceToken>{</OpenBraceToken>
                              <EscapeCategoryToken>Lu</EscapeCategoryToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </CategoryEscape>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="2">2</NumberToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </ExactNumericQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <ZeroOrOneQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <ExactNumericQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <OpenBraceToken>{</OpenBraceToken>
                              <NumberToken value="2">2</NumberToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </ExactNumericQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <QuestionToken>?</QuestionToken>
                      </ZeroOrOneQuantifier>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <ExactNumericQuantifier>
                            <CategoryEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>p</TextToken>
                              <OpenBraceToken>{</OpenBraceToken>
                              <EscapeCategoryToken>Lu</EscapeCategoryToken>
                              <CloseBraceToken>}</CloseBraceToken>
                            </CategoryEscape>
                            <OpenBraceToken>{</OpenBraceToken>
                            <NumberToken value="2">2</NumberToken>
                            <CloseBraceToken>}</CloseBraceToken>
                          </ExactNumericQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..44)" Text="\b(\p{Lu}{2})(\d{2})?(\p{Lu}{2})\b" />
                    <Capture Name="1" Span="[12..23)" Text="(\p{Lu}{2})" />
                    <Capture Name="2" Span="[23..30)" Text="(\d{2})" />
                    <Capture Name="3" Span="[31..42)" Text="(\p{Lu}{2})" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest125()
        {
            Test("""
                @"\bgr[ae]y\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <Text>
                        <TextToken>gr</TextToken>
                      </Text>
                      <CharacterClass>
                        <OpenBracketToken>[</OpenBracketToken>
                        <Sequence>
                          <Text>
                            <TextToken>ae</TextToken>
                          </Text>
                        </Sequence>
                        <CloseBracketToken>]</CloseBracketToken>
                      </CharacterClass>
                      <Text>
                        <TextToken>y</TextToken>
                      </Text>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..21)" Text="\bgr[ae]y\b" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest126()
        {
            Test("""
                @"\b((?# case sensitive comparison)D\w+)\s(?ixn)((?#case insensitive comparison)d\w+)\b"
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <CommentTrivia>(?# case sensitive comparison)</CommentTrivia>
                              </Trivia>D</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <CharacterClassEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>s</TextToken>
                      </CharacterClassEscape>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>ixn</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                      <SimpleGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <Sequence>
                          <Text>
                            <TextToken>
                              <Trivia>
                                <CommentTrivia>(?#case insensitive comparison)</CommentTrivia>
                              </Trivia>d</TextToken>
                          </Text>
                          <OneOrMoreQuantifier>
                            <CharacterClassEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>w</TextToken>
                            </CharacterClassEscape>
                            <PlusToken>+</PlusToken>
                          </OneOrMoreQuantifier>
                        </Sequence>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleGrouping>
                      <AnchorEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>b</TextToken>
                      </AnchorEscape>
                    </Sequence>
                    <EndOfFile />
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..95)" Text="\b((?# case sensitive comparison)D\w+)\s(?ixn)((?#case insensitive comparison)d\w+)\b" />
                    <Capture Name="1" Span="[12..48)" Text="((?# case sensitive comparison)D\w+)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
 
        [Fact]
        public void ReferenceTest127()
        {
            Test("""
                @"\{\d+(,-*\d+)*(\:\w{1,4}?)*\}(?x) # Looks for a composite format item."
                """, """
                <Tree>
                  <CompilationUnit>
                    <Sequence>
                      <SimpleEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>{</TextToken>
                      </SimpleEscape>
                      <OneOrMoreQuantifier>
                        <CharacterClassEscape>
                          <BackslashToken>\</BackslashToken>
                          <TextToken>d</TextToken>
                        </CharacterClassEscape>
                        <PlusToken>+</PlusToken>
                      </OneOrMoreQuantifier>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <Text>
                              <TextToken>,</TextToken>
                            </Text>
                            <ZeroOrMoreQuantifier>
                              <Text>
                                <TextToken>-</TextToken>
                              </Text>
                              <AsteriskToken>*</AsteriskToken>
                            </ZeroOrMoreQuantifier>
                            <OneOrMoreQuantifier>
                              <CharacterClassEscape>
                                <BackslashToken>\</BackslashToken>
                                <TextToken>d</TextToken>
                              </CharacterClassEscape>
                              <PlusToken>+</PlusToken>
                            </OneOrMoreQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <ZeroOrMoreQuantifier>
                        <SimpleGrouping>
                          <OpenParenToken>(</OpenParenToken>
                          <Sequence>
                            <SimpleEscape>
                              <BackslashToken>\</BackslashToken>
                              <TextToken>:</TextToken>
                            </SimpleEscape>
                            <LazyQuantifier>
                              <ClosedRangeNumericQuantifier>
                                <CharacterClassEscape>
                                  <BackslashToken>\</BackslashToken>
                                  <TextToken>w</TextToken>
                                </CharacterClassEscape>
                                <OpenBraceToken>{</OpenBraceToken>
                                <NumberToken value="1">1</NumberToken>
                                <CommaToken>,</CommaToken>
                                <NumberToken value="4">4</NumberToken>
                                <CloseBraceToken>}</CloseBraceToken>
                              </ClosedRangeNumericQuantifier>
                              <QuestionToken>?</QuestionToken>
                            </LazyQuantifier>
                          </Sequence>
                          <CloseParenToken>)</CloseParenToken>
                        </SimpleGrouping>
                        <AsteriskToken>*</AsteriskToken>
                      </ZeroOrMoreQuantifier>
                      <SimpleEscape>
                        <BackslashToken>\</BackslashToken>
                        <TextToken>}</TextToken>
                      </SimpleEscape>
                      <SimpleOptionsGrouping>
                        <OpenParenToken>(</OpenParenToken>
                        <QuestionToken>?</QuestionToken>
                        <OptionsToken>x</OptionsToken>
                        <CloseParenToken>)</CloseParenToken>
                      </SimpleOptionsGrouping>
                    </Sequence>
                    <EndOfFile>
                      <Trivia>
                        <WhitespaceTrivia> </WhitespaceTrivia>
                        <CommentTrivia># Looks for a composite format item.</CommentTrivia>
                      </Trivia>
                    </EndOfFile>
                  </CompilationUnit>
                  <Captures>
                    <Capture Name="0" Span="[10..80)" Text="\{\d+(,-*\d+)*(\:\w{1,4}?)*\}(?x) # Looks for a composite format item." />
                    <Capture Name="1" Span="[15..23)" Text="(,-*\d+)" />
                    <Capture Name="2" Span="[24..36)" Text="(\:\w{1,4}?)" />
                  </Captures>
                </Tree>
                """, RegexOptions.None);
        }
    }
}