public async Task Test_Array_Ref()
        {
            int[]           array = new int[] { 1, 2, 3 };
            TestRef <int[]> a     = new TestRef <int[]>();

            a.A = array;
            a.B = array;

            await Test(a, b =>
            {
                Assert.True(Object.ReferenceEquals(b.A, b.B));
                Assert.Equal(array, b.A);
            }, new BinarySerializerOptions()
            {
                DefaultBufferSize = 1
            });
        }
        public async Task Test_Ctor_With_Parameter_Simple_Ref()
        {
            TestCtorA item = new TestCtorA("A", 1);

            TestRef <TestCtorA> a = new TestRef <TestCtorA>();

            a.A = item;
            a.B = item;

            await Test(a, b =>
            {
                Assert.True(Object.ReferenceEquals(b.A, b.B));
                checkCtorCProc(item)(b.A);
            }, new BinarySerializerOptions()
            {
                DefaultBufferSize = 1
            });
        }
        public async Task Test_Dictionary_Ref()
        {
            Dictionary <int, int> dic = new Dictionary <int, int>()
            {
                { 1, 1 }, { 2, 2 }, { 3, 3 }
            };
            TestRef <Dictionary <int, int> > a = new TestRef <Dictionary <int, int> >();

            a.A = dic;
            a.B = dic;

            await Test(a, b =>
            {
                Assert.True(Object.ReferenceEquals(b.A, b.B));
                Assert.Equal(dic, b.A);
            }, new BinarySerializerOptions()
            {
                DefaultBufferSize = 1
            });
        }