internal static void SwapContents(Owned a, Owned b)
            {
                a.EnsureNotDisposed();
                b.EnsureNotDisposed();

                IMemoryOwner <T>[] tempOwners = a.memoryOwners;
                long tempTotalLength          = a.TotalLength;
                int  tempBufferLength         = a.BufferLength;

                a.memoryOwners = b.memoryOwners;
                a.TotalLength  = b.TotalLength;
                a.BufferLength = b.BufferLength;

                b.memoryOwners = tempOwners;
                b.TotalLength  = tempTotalLength;
                b.BufferLength = tempBufferLength;

                a.View.Invalidate();
                b.View.Invalidate();
                a.View = new MemoryGroupView <T>(a);
                b.View = new MemoryGroupView <T>(b);
            }