public void testSimpleDeserializationParameter(ObjectReaderTester<IdParameterWrapper> reader) {
   IdParameterWrapper result = reader.read(EXP_SIMPLE_INT_PROP);
   assertEquals(7, result.test.value);
   assertSame(result.test, result.test.next.test);
 }
 public void testCustomDeserializationParameter(ObjectReaderTester<IdParameterWrapperExt> reader) {
   IdParameterWrapperExt result = reader.read(EXP_CUSTOM_VIA_PROP);
   assertEquals(99, result.test.value);
   assertSame(result.test, result.test.next.test);
   assertEquals(3, result.test.customId);
 }
 public void testCustomDeserializationProperty(ObjectReaderTester<IdPropertyWrapperExt> reader) {
   IdPropertyWrapperExt result = reader.read(EXP_CUSTOM_VIA_PROP);
   assertEquals(99, result.node.value);
   assertSame(result.node, result.node.next.node);
   assertEquals(3, result.node.customId);
 }
 public void testCustomDeserializationClass(ObjectReaderTester<IdentifiableCustom> reader) {
   IdentifiableCustom result = reader.read(EXP_CUSTOM_VIA_CLASS);
   assertEquals(-900, result.value);
   assertSame(result, result.next);
 }
 // Another test to ensure ordering is not required (i.e. can do front references)
 public void testSimpleDeserWithForwardRefs(ObjectReaderTester<IdPropertyWrapper> reader) {
   IdPropertyWrapper result =
       reader.read("{\"node\":{\"value\":7,\"next\":{\"node\":1}, \"@id\":1}}");
   assertEquals(7, result.node.value);
   assertSame(result.node, result.node.next.node);
 }
 public void testSimpleDeserializationProperty(ObjectReaderTester<IdPropertyWrapper> reader) {
   IdPropertyWrapper result = reader.read(EXP_SIMPLE_INT_PROP);
   assertEquals(7, result.node.value);
   assertSame(result.node, result.node.next.node);
 }
 public void testSimpleDeserializationClass(ObjectReaderTester<Identifiable> reader) {
   // then bring back...
   Identifiable result = reader.read(EXP_SIMPLE_INT_CLASS);
   assertEquals(13, result.value);
   assertSame(result, result.next);
 }