Ensure ChannelInboundMessageHandlerAdapter.endMessageReceived() is always called after handling the inbound message queue. / Call fireInboundBufferUpdated() automatically if the next inbound message buffer was changed.
Use Message<Object> instead of Message<I>
Fix missing ChannelHandlerUtil.acceptedMessageTypes() in ByteToMessageCodec constructor
Automatic messageType detection for ChannelInboundMessageHandlerAdapter
Let ChannelPipeline implement Iterable
Let ChannelPipeline.set* methods return itself to be more consistent with the reset
Let ChannelGroupFuture.addListener(..) return itself to make consistent with ChannelFuture
More robust automatic messageType detection for ChannelInboundMessageHandlerAdapter and MessageToMessageDecoder
AbstractBootstrap.validate() should return reference to itself
Extract type parameter finder code to a utility class
Automatically detect the message types in  MessageToMessageCodec
Make ChannelOutboundMessageHandlerAdapter similar to ChannelInboundMessageHandlerAdapter
Fix method naming / Make super method final
Remove confusing ChannelState/OperationHandlerAdapter.inboundBufferUpdated/flush() implementation
Use thread-local map instead of ConcurrentHashMap for faster instantiation of handler adapters
Fix incorrect exception message
Tighten access modifier of encode/decode()
Make ReplayingDecoder.newInboundBuffer/discardInboundReadByte() final for safety
Use finer grained type parameter in SPDY
Replace TypeParameterFinder with TypeParameterMatcher

 - We can avoid reflective matching using byte code generation.
 - Better matching performance when message type is Object