code: public void put(@NotNull ByteBuf buf) {
  		put(buf.array, buf.head, buf.tail - buf.head);
  		buf.head = buf.tail;
  	}
docs: Puts given ByteBuf to this {@code ByteBuf} from the {@link #tail}
  and increases the {@link #tail} by the length of the given ByteBuf.
  Then equates ByteBuf's {@link #head} to {@link #tail}.
  
  Only those bytes which are located between {@link #head}
  and {@link #tail} are put to the {@link #array}.
  
  @param buf the ByteBuf which will be put to the {@code ByteBuf}