@Override
public Object call() throws Exception {
if ("createChannel".equals(method.getName())) {
Channel channel = (Channel) Reflection.invoke(delegate, method, args);
ChannelHandler channelHandler =
new ChannelHandler(ConnectionHandler.this, channel, new Config(config));
Channel channelProxy =
(Channel) Proxy.newProxyInstance(Connection.class.getClassLoader(),
CHANNEL_TYPES, channelHandler);
channelHandler.proxy = channelProxy;
channels.put(Integer.valueOf(channel.getChannelNumber()).toString(), channelHandler);