protected AbstractChannel(String discriminator, boolean client,
Collection<? extends RequestHandler<Channel>> handlers,
CloseableExecutorService executorService) {
super(discriminator);
gracefulFuture = new DefaultCloseFuture(discriminator, lock);
localWindow = new Window(this, null, client, true);
remoteWindow = new Window(this, null, client, false);
channelListenerProxy = EventListenerUtils.proxyWrapper(
ChannelListener.class, getClass().getClassLoader(), channelListeners);
executor = executorService;
addRequestHandlers(handlers);
}