code: public boolean add(ByteBuf buf) {
          if (count == IOV_MAX) {
              // No more room!
              return false;
          } else if (buf.nioBufferCount() == 1) {
              final int len = buf.readableBytes();
              if (len == 0) {
                  return true;
              }
              if (buf.hasMemoryAddress()) {
                  return add(buf.memoryAddress(), buf.readerIndex(), len);
              } else {
                  ByteBuffer nioBuffer = buf.internalNioBuffer(buf.readerIndex(), len);
                  return add(Buffer.memoryAddress(nioBuffer), nioBuffer.position(), len);
              }
          } else {
              ByteBuffer[] buffers = buf.nioBuffers();
              for (ByteBuffer nioBuffer : buffers) {
                  final int len = nioBuffer.remaining();
                  if (len != 0 &&
                      (!add(Buffer.memoryAddress(nioBuffer), nioBuffer.position(), len) || count == IOV_MAX)) {
                      return false;
                  }
              }
              return true;
          }
      }
docs: Add a {@link ByteBuf} to this {@link IovArray}.
  @param buf The {@link ByteBuf} to add.
  @return {@code true} if the entire {@link ByteBuf} has been added to this {@link IovArray}. Note in the event
  that {@link ByteBuf} is a {@link CompositeByteBuf} {@code false} may be returned even if some of the components
  have been added.