splitTransferBuffer = transferBuffer => {
  transferBuffer.byteLength >= MIN_TRANSFER_BUFFER_LENGTH ||
    Fail`Transfer buffer of ${transferBuffer.byteLength} bytes is smaller than MIN_TRANSFER_BUFFER_LENGTH ${MIN_TRANSFER_BUFFER_LENGTH}`;
  const lenbuf = new BigUint64Array(transferBuffer, 0, 1);

  // The documentation says that this needs to be an Int32Array for use with
  // Atomics.notify:
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/notify#syntax
  const statusbuf = new Int32Array(transferBuffer, lenbuf.byteLength, 1);
  const overheadLength = lenbuf.byteLength + statusbuf.byteLength;
  assert.equal(
    overheadLength,
    TRANSFER_OVERHEAD_LENGTH,
    X`Internal error; actual overhead ${overheadLength} of bytes is not TRANSFER_OVERHEAD_LENGTH ${TRANSFER_OVERHEAD_LENGTH}`,
  );
  const databuf = new Uint8Array(transferBuffer, overheadLength);
  databuf.byteLength >= MIN_DATA_BUFFER_LENGTH ||
    Fail`Transfer buffer of size ${transferBuffer.byteLength} only supports ${databuf.byteLength} data bytes; need at least ${MIN_DATA_BUFFER_LENGTH}`;
  return harden({ statusbuf, lenbuf, databuf });
}
Return a status buffer, length buffer, and data buffer backed by transferBuffer.

@param {SharedArrayBuffer} transferBuffer the backing buffer