private static void TestDataContractAndMessagePackMemberAndNonSerializedAreMixedCore(SerializationMethod method)
        {
            var context = new SerializationContext()
            {
                SerializationMethod = method
            };

            using (var buffer = new MemoryStream())
            {
                var target = new MessagePackMemberAndDataMemberMixedTarget();
                target.ShouldSerialized1    = 111;
                target.ShouldSerialized2    = 222;
                target.ShouldSerialized3    = 333;
                target.ShouldNotSerialized1 = 444;
                target.ShouldNotSerialized2 = 555;
                var serializer = MessagePackSerializer.Create <MessagePackMemberAndDataMemberMixedTarget>(context);
                serializer.Pack(buffer, target);

                buffer.Position = 0;
                var intermediate = Unpacking.UnpackObject(buffer);

                if (method == SerializationMethod.Array)
                {
                    var asArray = intermediate.AsList();
                    Assert.That(asArray.Count, Is.EqualTo(3));
                    Assert.That(asArray[0] == target.ShouldSerialized1);
                    Assert.That(asArray[1] == target.ShouldSerialized2);
                    Assert.That(asArray[2] == target.ShouldSerialized3);
                }
                else
                {
                    var asMap = intermediate.AsDictionary();
                    Assert.That(asMap.Count, Is.EqualTo(3));
                    Assert.That(asMap["ShouldSerialized1"] == target.ShouldSerialized1);
                    Assert.That(asMap["ShouldSerialized2"] == target.ShouldSerialized2);
                    Assert.That(asMap["ShouldSerialized3"] == target.ShouldSerialized3);
                }

                buffer.Position = 0;

                var result = serializer.Unpack(buffer);

                Assert.That(result.ShouldSerialized1, Is.EqualTo(target.ShouldSerialized1));
                Assert.That(result.ShouldSerialized2, Is.EqualTo(target.ShouldSerialized2));
                Assert.That(result.ShouldSerialized3, Is.EqualTo(target.ShouldSerialized3));
                Assert.That(result.ShouldNotSerialized1, Is.Not.EqualTo(target.ShouldNotSerialized1).And.EqualTo(0));
                Assert.That(result.ShouldNotSerialized2, Is.Not.EqualTo(target.ShouldNotSerialized2).And.EqualTo(0));
            }
        }
		private static void TestDataContractAndMessagePackMemberAndNonSerializedAreMixedCore( SerializationMethod method )
		{
			var context = new SerializationContext() { SerializationMethod = method };

			using ( var buffer = new MemoryStream() )
			{
				var target = new MessagePackMemberAndDataMemberMixedTarget();
				target.ShouldSerialized1 = 111;
				target.ShouldSerialized2 = 222;
				target.ShouldSerialized3 = 333;
				target.ShouldNotSerialized1 = 444;
				target.ShouldNotSerialized2 = 555;
				var serializer = MessagePackSerializer.Create<MessagePackMemberAndDataMemberMixedTarget>( context );
				serializer.Pack( buffer, target );

				buffer.Position = 0;
				var intermediate = Unpacking.UnpackObject( buffer );

				if ( method == SerializationMethod.Array )
				{
					var asArray = intermediate.AsList();
					Assert.That( asArray.Count, Is.EqualTo( 3 ) );
					Assert.That( asArray[ 0 ] == target.ShouldSerialized1 );
					Assert.That( asArray[ 1 ] == target.ShouldSerialized2 );
					Assert.That( asArray[ 2 ] == target.ShouldSerialized3 );
				}
				else
				{
					var asMap = intermediate.AsDictionary();
					Assert.That( asMap.Count, Is.EqualTo( 3 ) );
					Assert.That( asMap[ "ShouldSerialized1" ] == target.ShouldSerialized1 );
					Assert.That( asMap[ "ShouldSerialized2" ] == target.ShouldSerialized2 );
					Assert.That( asMap[ "ShouldSerialized3" ] == target.ShouldSerialized3 );
				}

				buffer.Position = 0;

				var result = serializer.Unpack( buffer );

				Assert.That( result.ShouldSerialized1, Is.EqualTo( target.ShouldSerialized1 ) );
				Assert.That( result.ShouldSerialized2, Is.EqualTo( target.ShouldSerialized2 ) );
				Assert.That( result.ShouldSerialized3, Is.EqualTo( target.ShouldSerialized3 ) );
				Assert.That( result.ShouldNotSerialized1, Is.Not.EqualTo( target.ShouldNotSerialized1 ).And.EqualTo( 0 ) );
				Assert.That( result.ShouldNotSerialized2, Is.Not.EqualTo( target.ShouldNotSerialized2 ).And.EqualTo( 0 ) );
			}
		}