public void StreamAccess_WithMultipleIndices_EnumeratesSourceAtMostOnce(IEnumerable <int> accessIndices, IEnumerable <string?> expectedTokens)
        {
            var source   = new TokenSource();
            var stream   = new TokenStream(new StaticLexer(source.GetTokens()));
            var tokens   = new List <string?>();
            var maxIndex = 0;

            foreach (var i in accessIndices)
            {
                tokens.Add(stream.Get(i).Value);
                maxIndex = Math.Max(maxIndex, i);
            }

            source.EnumerationCount.Should().Be(1);
            source.MaxStep.Should().Be(maxIndex + 1);
            tokens.Should().BeEquivalentTo(expectedTokens);
        }