invocationResults.clear();
final List invocationResults = new ArrayList();
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        invocationResults.clear();        for (int i = 0; i < targets.length; i++) {            if(method.getDeclaringClass().isInstance(targets[i])) {                Object result = method.invoke(targets[i], args);                if(result != null) {                    invocationResults.add(result);                }            }        }        if(invocationResults.size() == 0) {            return null;        }        if(invocationResults.size() == 1) {            return invocationResults.get(0);        }        if (method.getReturnType().equals(int.class)) {            return addIntegers(invocationResults.toArray());        }        if (method.getReturnType().equals(boolean.class)) {            return addBooleans(invocationResults.toArray());        }        return Multicasting.object(proxyFactory, invocationResults.toArray());    }