code: private static ByteBuf allocateBuffer(ByteBufAllocator allocator, byte id, int contentLength) {
  		return allocateBuffer(allocator, id, 0, contentLength, true);
  	}
docs: Allocates a new (header and contents) buffer and adds some header information for the frame
  decoder.
  
  <p>If the <tt>contentLength</tt> is unknown, you must write the actual length after adding
  the contents as an integer to position <tt>0</tt>!
  
  @param allocator
  byte buffer allocator to use
  @param id
  {@link NettyMessage} subclass ID
  @param contentLength
  content length (or <tt>-1</tt> if unknown)
  
  @return a newly allocated direct buffer with header data written for {@link
  NettyMessageDecoder}