public void GenericToOwnType_Aligned(int count)
            {
                AlignedFoo[] source = AlignedFoo.CreateArray(count + 2);
                AlignedFoo[] dest   = new AlignedFoo[count + 5];

                fixed(AlignedFoo *pSource = source)
                fixed(AlignedFoo * pDest = dest)
                {
                    BufferPointer <AlignedFoo> apSource = new BufferPointer <AlignedFoo>(source, pSource, 1);
                    BufferPointer <AlignedFoo> apDest   = new BufferPointer <AlignedFoo>(dest, pDest, 1);

                    BufferPointer.Copy(apSource, apDest, count - 1);
                }

                AssertNotDefault(source, 1);
                AssertNotDefault(dest, 1);

                Assert.NotEqual(source[0], dest[0]);
                Assert.Equal(source[1], dest[1]);
                Assert.Equal(source[2], dest[2]);
                Assert.Equal(source[count - 1], dest[count - 1]);
                Assert.NotEqual(source[count], dest[count]);
            }
            public void GenericToBytes_Aligned(int count)
            {
                int destCount = count * sizeof(Foo);

                AlignedFoo[] source = AlignedFoo.CreateArray(count + 2);
                byte[]       dest   = new byte[destCount + sizeof(AlignedFoo) * 2];

                fixed(AlignedFoo *pSource = source)
                fixed(byte *pDest = dest)
                {
                    BufferPointer <AlignedFoo> apSource = new BufferPointer <AlignedFoo>(source, pSource, 1);
                    BufferPointer <byte>       apDest   = new BufferPointer <byte>(dest, pDest, sizeof(AlignedFoo));

                    BufferPointer.Copy(apSource, apDest, count - 1);
                }

                AssertNotDefault(source, 1);

                Assert.False(ElementsAreEqual(source, dest, 0));
                Assert.True(ElementsAreEqual(source, dest, 1));
                Assert.True(ElementsAreEqual(source, dest, 2));
                Assert.True(ElementsAreEqual(source, dest, count - 1));
                Assert.False(ElementsAreEqual(source, dest, count));
            }