docs: public static NDArrayMessageChunk[] chunks(NDArrayMessage message, int chunkSize) {
          int numChunks = numChunksForMessage(message, chunkSize);
          NDArrayMessageChunk[] ret = new NDArrayMessageChunk[numChunks];
          DirectBuffer wholeBuffer = NDArrayMessage.toBuffer(message);
          String messageId = UUID.randomUUID().toString();
          for (int i = 0; i < ret.length; i++) {
              //data: only grab a chunk of the data
              ByteBuffer view = (ByteBuffer) wholeBuffer.byteBuffer().asReadOnlyBuffer().position(i * chunkSize);
              view.limit(Math.min(i * chunkSize + chunkSize, wholeBuffer.capacity()));
              view.order(ByteOrder.nativeOrder());
              view = view.slice();
              NDArrayMessageChunk chunk = NDArrayMessageChunk.builder().id(messageId).chunkSize(chunkSize)
                              .numChunks(numChunks).messageType(MessageType.CHUNKED).chunkIndex(i).data(view).build();
              //insert in to the array itself
              ret[i] = chunk;
          }
  
          return ret;
      }