internal static void WriteRawBytes(ref byte destination, ref byte source, int sourceBytesToCopy, ref int idx)
        {
            //if (0u >= (uint)sourceBytesToCopy) { return; }

            MessagePackBinary.CopyMemory(ref source, ref Unsafe.AddByteOffset(ref destination, (IntPtr)idx), sourceBytesToCopy);
            idx += sourceBytesToCopy;
        }
        public static void WriteRawBytes(ref MessagePackWriter writer, byte[] source, ref int idx)
        {
            var count = source.Length;

            writer.Ensure(idx, count);
            MessagePackBinary.CopyMemory(source, 0, writer._borrowedBuffer, idx, count);
            idx += count;
        }
        private static byte[] ReadFast(ref MessagePackReader reader, ref byte position)
        {
            IntPtr offset = (IntPtr)1;

            var length = unchecked (
                Unsafe.AddByteOffset(ref position, offset) << 8 |
                    Unsafe.AddByteOffset(ref position, offset + 1));

            var newBytes = new byte[length];

            MessagePackBinary.CopyMemory(ref Unsafe.AddByteOffset(ref position, offset + 2), ref newBytes[0], length);
            reader.AdvanceWithinSpan(length + 3);
            return(newBytes);
        }
        private static byte[] ReadFast(ref MessagePackReader reader, ref byte position)
        {
            IntPtr offset = (IntPtr)1;

            var length = Unsafe.AddByteOffset(ref position, offset);

            if (0u >= length)
            {
                reader.AdvanceWithinSpan(2);
                return(MessagePackBinary.Empty);
            }

            var newBytes = new byte[length];

            MessagePackBinary.CopyMemory(ref Unsafe.AddByteOffset(ref position, offset + 1), ref newBytes[0], length);
            reader.AdvanceWithinSpan(length + 2);
            return(newBytes);
        }