I think we should make `MessageBuffer` immutable. Otherwise should include position in it. My suggestion is to make it immutable and remove `setLimit`.