public void GetLinesFromAndGroupBlockTest()
        {
            int patternLength = 4;
            var pattern = new string('\0', patternLength);
            LineBuilder builder = new LineBuilder(pattern, null);

            // (a|aa)(b|bb)

            TextBlock aBlock = new TextBlock("a");
            TextBlock aaBlock = new TextBlock("aa");
            TextBlock bBlock = new TextBlock("b");
            TextBlock bbBlock = new TextBlock("bb");
            OrGroupBlock orGroupBlock1 = new OrGroupBlock(new[] { aBlock, aaBlock });
            OrGroupBlock orGroupBlock2 = new OrGroupBlock(new[] { bBlock, bbBlock });
            AndGroupBlock andGroupBlock = new AndGroupBlock(new[] { orGroupBlock1, orGroupBlock2 });
            List<string> lines = builder.GetLinesFromAndGroupBlock(0, andGroupBlock).ToList();

            string[] expectedLines = new string[] { "ab", "abb", "aab", "aabb" };
            CollectionAssert.AreEquivalent(expectedLines, lines);
        }