public void Between_Ranges()
 {
     var data = new[] { 0, 1, 2, 3, 1, 2, 5, 6, 2, 1, 2, 8, 9 };
     var needle = new[] {1, 2};
     var matches = data.Searches(needle).Select(i => Tuple.Create(i, i + needle.Length - 1)).ToList();
     matches.Select(t => t.Item1).Should().BeEquivalentTo(1, 4, 9);
     var split = matches.Between(data).ToList();
     split.Count().Should().Be(4);
     split[0].Should().BeEquivalentTo(0);
     split[1].Should().BeEquivalentTo(3);
     split[2].Should().BeEquivalentTo(5, 6, 2);
     split[3].Should().BeEquivalentTo(8, 9);
 }
 public void Between()
 {
     var data = new[] {0, 1, 2, 3, 1, 2, 5, 6, 2, 1, 2, 8, 9};
     var needle = new[] { 1, 2 };
     var matches = data.Searches(needle).ToList();
     matches.Should().BeEquivalentTo(1, 4, 9);
     var split = matches.Between(data).ToList();
     split.Count().Should().Be(4);
     split[0].Should().BeEquivalentTo(0);
     split[1].Should().BeEquivalentTo(2, 3);
     split[2].Should().BeEquivalentTo(2, 5, 6, 2);
     split[3].Should().BeEquivalentTo(2, 8, 9);
 }