awaitility-proxy/src/main/java/org/awaitility/proxy/internal/MethodCaller.java
@SuppressWarnings("unchecked")
    public T call() throws InvocationTargetException, IllegalAccessException {
        try {
            return (T) method.invoke(target, args);
        } catch (IllegalAccessException e) {
            return CheckedExceptionRethrower.safeRethrow(e);
        } catch (InvocationTargetException e) {
            return CheckedExceptionRethrower.safeRethrow(e.getCause());
        }
    }
@SuppressWarnings("unchecked")
    public T call() throws InvocationTargetException, IllegalAccessException {
        try {
            return (T) method.invoke(target, args);
        } catch (IllegalAccessException e) {
            return CheckedExceptionRethrower.safeRethrow(e);
        } catch (InvocationTargetException e) {
            return CheckedExceptionRethrower.safeRethrow(e.getCause());
        }
    }
/*
(non-Javadoc)

@see java.util.concurrent.Callable#call()