private <TRequest, TResponse> ClientResponseCommandExecutor<TResponse> createResponseExecutor( Membership.Member member, ResponseCommand<TRequest, TResponse> command) { ResponseCommandExecutor commandHandler = null; for (ResponseCommandExecutor ch : responseCommandHandlers) { if (ch.canHandle(command.getType())) commandHandler = ch; } if (command instanceof Udp) return new UdpClientResponseCommandExecutor<>(member, command, commandHandler, logger); return new TcpClientResponseCommandExecutor<>(member, command, commandHandler, logger); }