catch (Exception e) {
catch (Throwable e) {
    protected Object invokeOnDelegate(String methodName, Class[] parameterTypes, Object[] args) throws Throwable {        try {            if (delegate == null) {                return null;            }            return delegate.getClass().getMethod(methodName, parameterTypes).invoke(delegate, args);        }        catch (InvocationTargetException e) {            throw e.getTargetException();        }        catch (Exception e) {            throw new DelegationException("Problem calling " + methodName, e);        }    }