makeSelfCell = data => {
  /** @type {Partial<DoublyLinkedCell<Data>>} */
  const incompleteCell = {
    next: undefined,
    prev: undefined,
    data,
  };
  const selfCell = /** @type {DoublyLinkedCell<Data>} */ (incompleteCell);
  selfCell.next = selfCell;
  selfCell.prev = selfCell;
  // Not frozen!
  return selfCell;
}
Makes a new self-linked cell. There are two reasons to do so:
   * To make the head sigil of a new initially-empty doubly-linked ring.
   * To make a non-sigil cell to be `spliceAfter`ed.

@template Data
@param {Data} data
@returns {DoublyLinkedCell<Data>}