private void processResponse(R response) throws IOException { //noinspection unchecked final Class<R> responseClass = (Class<R>) response.getClass(); List<AbstractResponseHandler<?>> handlers; synchronized (myLock) { final Collection<AbstractResponseHandler<? extends R>> responseHandlers = myClassHandlers.get(responseClass); if (responseHandlers == null) return; handlers = new SmartList<>(responseHandlers); } for (AbstractResponseHandler handler : handlers) { //noinspection unchecked handler.processResponse(response); } }