protected <T> T deserialize( final byte[] in, final XMLBinding binding ) {
XMLObjectReader reader = null;
try {
final ByteArrayInputStream bis = new ByteArrayInputStream( in );
reader = XMLObjectReader.newInstance( bis );
final XMLReferenceResolver xmlReferenceResolver = new XMLReferenceResolver();
xmlReferenceResolver.setIdentifierAttribute( JavolutionTranscoder.REFERENCE_ATTRIBUTE_ID );
xmlReferenceResolver.setReferenceAttribute( JavolutionTranscoder.REFERENCE_ATTRIBUTE_REF_ID );
reader.setReferenceResolver( xmlReferenceResolver );
reader.setBinding( binding );
if ( !reader.hasNext() ) {
throw new IllegalStateException( "reader has no input" );
}