code: Pointer valInMulti(final T val, final int elements) {
      final long ptrVal2SizeOff = MDB_VAL_STRUCT_SIZE + STRUCT_FIELD_OFFSET_SIZE;
      ptrArray.putLong(ptrVal2SizeOff, elements); // ptrVal2.size
      proxy.in(val, ptrVal, ptrValAddr); // ptrVal1.data
      final long totalBufferSize = ptrVal.getLong(STRUCT_FIELD_OFFSET_SIZE);
      final long elemSize = totalBufferSize / elements;
      ptrVal.putLong(STRUCT_FIELD_OFFSET_SIZE, elemSize); // ptrVal1.size
  
      return ptrArray;
    }
docs: Prepares an array suitable for presentation as the data argument to a
  <code>MDB_MULTIPLE</code> put.
  
  <p>
  The returned array is equivalent of two <code>MDB_val</code>s as follows:
  
  <ul>
  <li>ptrVal1.data = pointer to the data address of passed buffer</li>
  <li>ptrVal1.size = size of each individual data element</li>
  <li>ptrVal2.data = unused</li>
  <li>ptrVal2.size = number of data elements (as passed to this method)</li>
  </ul>
  
  @param val      a user-provided buffer with data elements (required)
  @param elements number of data elements the user has provided
  @return a properly-prepared pointer to an array for the operation