I am confused, how is that unwrapping anything? Do you not need something like:

		if ( type.isAssignableFrom( getClass() ) ) {
			return type.cast( this );
		}
		throw log.getTypeNotSupportedException( type );

Or how to I unwrap our own impl?