public UnmanagedBuffer <T> CreateGuardedBuffer <T>(
            UnmanagedMemoryHandle handle,
            int lengthInElements,
            bool clear)
            where T : struct
        {
            var buffer = new UnmanagedBuffer <T>(lengthInElements, new ReturnToPoolBufferLifetimeGuard(this, handle));

            if (clear)
            {
                buffer.Clear();
            }

            return(buffer);
        }