public static void Do <T>(this ISpanSequence <T> buffer, ActionOfSpan <T> action) { Span <T> flat; if (buffer.Count < 2) { flat = buffer.Flatten(); } if (buffer.TotalLength < 128) { unsafe { var stackArray = stackalloc byte[128]; flat = new Span <T>(stackArray, 128); if (!buffer.TryCopyTo(ref flat, 0)) { throw new Exception(nameof(buffer) + ".TotalLength returned bad value."); } } } else { flat = buffer.Flatten(); } action(flat); }