public void MergeChunks_VisitsChunksPriorToMerging()
        {
            // Arrange
            var codeTree = new CodeTree();

            codeTree.Chunks.Add(new LiteralChunk());
            codeTree.Chunks.Add(new ExpressionBlockChunk());
            codeTree.Chunks.Add(new ExpressionBlockChunk());

            var merger       = new Mock <IChunkMerger>();
            var mockSequence = new MockSequence();

            merger.InSequence(mockSequence)
            .Setup(m => m.VisitChunk(It.IsAny <LiteralChunk>()))
            .Verifiable();
            merger.InSequence(mockSequence)
            .Setup(m => m.Merge(codeTree, It.IsAny <LiteralChunk>()))
            .Verifiable();
            var inheritedChunks = new List <Chunk>
            {
                new CodeAttributeChunk(),
                new LiteralChunk()
            };
            var utility = new ChunkInheritanceUtility(codeTree, inheritedChunks, "dynamic");

            // Act
            utility.ChunkMergers[typeof(LiteralChunk)] = merger.Object;
            utility.MergeInheritedChunks(inheritedChunks);

            // Assert
            merger.Verify();
        }