framework/application/engine/api/src/main/java/org/ldp4j/application/engine/ApplicationEngine.java
public <T> T unwrap(final Class<? extends T> clazz) throws ApplicationEngineException {
		checkNotNull(clazz,"Target class cannot be null");
		if(!clazz.isInstance(this)) {
			throw new ApplicationEngineException("Application Engine implementation is not compatible with "+clazz.getCanonicalName());
		}
		return clazz.cast(this);
	}
public <T> T unwrap(final Class<? extends T> clazz) throws ApplicationEngineException {
		checkNotNull(clazz,"Target class cannot be null");
		if(!clazz.isInstance(this)) {
			throw new ApplicationEngineException("Application Engine implementation is not compatible with "+clazz.getCanonicalName());
		}
		return clazz.cast(this);
	}
Return an object of the specified type to allow access to the
provider-specific API. If the provider's ApplicationEngine implementation
does not support the specified class, the ApplicationEngineException is
thrown.

@param <T> the type of object to be returned
@param clazz
the class of the object to be returned. This is normally
either the underlying {@code ApplicationEngine} implementation
class or an interface that it implements.
@return an instance of the specified class
@throws ApplicationEngineException
if the provider does not support the call