public Object unmarshal(final HierarchicalStreamReader arg0, final UnmarshallingContext arg1) {
   Object result;
   Class<?> targetType = null;
   try {
     targetType = arg1.getRequiredType();
     result = defaultConv.lookupConverterForType(targetType).unmarshal(arg0, arg1);
   } catch (final Exception ex) {
     log.warn("Ignore unknown class or property " + targetType + " " + ex.getMessage());
     return null;
   }
   try {
     if (result != null) {
       registerObject(result);
     }
   } catch (final HibernateException ex) {
     log.fatal("Failed to write " + result + " ex=" + ex, ex);
   } catch (final NullPointerException ex) {
     log.fatal("Failed to write " + result + " ex=" + ex, ex);
   }
   return result;
 }
 /**
  * @param mapper
  * @param converterLookup
  */
 public CustomJavassistEnhancedConverter(Mapper mapper, ConverterLookup converterLookup) {
   this.mapper = mapper;
   defaultConverter = converterLookup.lookupConverterForType(Object.class);
 }
 public void marshal(
     final Object arg0, final HierarchicalStreamWriter arg1, final MarshallingContext arg2) {
   defaultConv.lookupConverterForType(arg0.getClass()).marshal(arg0, arg1, arg2);
 }