HotSwappingInvoker hiding = (HotSwappingInvoker) proxyFactory.getInvoker(currentProxy); current++; current = current % delegates.length; hiding.hotswap(delegates[current]); result = super.invokeOnDelegate(method, args);
synchronized (this) { HotSwappingInvoker hiding = (HotSwappingInvoker) proxyFactory.getInvoker(currentProxy); current++; current = current % delegates.length; hiding.hotswap(delegates[current]); result = super.invokeOnDelegate(method, args); }
    protected Object invokeOnDelegate(Method method, Object[] args) throws Throwable {        Object result = null;        try {            result = super.invokeOnDelegate(method, args);        } catch (InvocationTargetException e) {            if (exceptionClass.isInstance(e.getTargetException())) {                HotSwappingInvoker hiding = (HotSwappingInvoker) proxyFactory.getInvoker(currentProxy);                current++;                current = current % delegates.length;                hiding.hotswap(delegates[current]);                result = super.invokeOnDelegate(method, args);            } else {                throw e;            }        }        return result;    }