code: public int drainTo(@NotNull ByteBuf dest, int maxSize) {
  		int actualSize = drainTo(dest.array(), dest.tail(), maxSize);
  		dest.moveTail(actualSize);
  		return actualSize;
  	}
docs: Adds {@code maxSize} bytes from this queue to ByteBuf {@code dest} if
  queue contains more than {@code maxSize} bytes. Otherwise adds all
  bytes from queue to dest. In both cases increases queue's position to
  number of drained bytes.
  
  @param dest    {@code ByteBuf} for draining
  @param maxSize number of bytes for adding
  @return number of drained bytes