@SuppressWarnings("unchecked")
    public static <T> T unwrap(T instance) {
        return instance instanceof Decorator ? unwrap(((Decorator<T>) instance).delegate) : instance;
    }
@SuppressWarnings("unchecked")
    public static <T> T unwrap(T instance) {
        return instance instanceof Decorator ? unwrap(((Decorator<T>) instance).delegate) : instance;
    }
@ SuppressWarnings ( "unchecked" ) public static < T > T unwrap ( T instance ) { return instance instanceof Decorator ? unwrap ( ( ( Decorator < T > ) instance ) . delegate ) : instance ; }
This method is recursive.

@return the underlying delegate instance
This method is recursive .