code: @Override
  	public Object convert(final Object pvObject, final Class<?> pvToType) {
  		Object lvResult = pvObject;
  		lvResult = interceptorHandler.fireBeforeConvert(lvResult, pvToType);
  		try {
  			lvResult = convertInternal(lvResult, pvToType);
  		} catch (Exception e) {
  			interceptorHandler.fireOnError(e);
  			if (e instanceof ConversionException) {
  				throw (ConversionException) e;
  			} else {
  				throw new ConversionException(e);
  			}
  		} finally {
  			numberOfRecursion = -1;
  			uniqueIdGenerator.clear();
  			lvResult = interceptorHandler.fireAfterConvert(lvResult, pvToType);
  		}
  		
  		return lvResult;
  	}
docs: @see net.sf.sojo.core.Converter#convert(Object)
  
  @param pvObject the (root) source object.
  @param pvToType Type from target object, if for this type no Conversion is registered.
  @return The (converted) target object.