/// <summary>
 /// Narrows an enumerable to a segment. Boundaries are included.
 /// </summary>
 public static IReadonlyReversibleCollection <TPayload> Narrow <TPayload>(
     this IReversibleEnumerable <TPayload> enumerable,
     TPayload lowerBoundary,
     TPayload higherBoundary) =>
 new NarrowedReadonlyReversibleCollectionAdapter <TPayload>(
     enumerable,
     lowerBoundary,
     higherBoundary);
 public NarrowedReadonlyReversibleCollectionAdapter(
     IReversibleEnumerable <TPayload> decorated,
     TPayload lowerBoundary,
     TPayload upperBoundary)
 {
     _decorated       = decorated;
     _isLowerBoundary = payload => lowerBoundary.Equals(payload);
     _isUpperBoundary = payload => upperBoundary.Equals(payload);
 }