spliceAfter = (prev, selfCell) => {
  if (prev === selfCell) {
    // eslint-disable-next-line no-restricted-globals
    throw TypeError('Cannot splice a cell into itself');
  }
  if (selfCell.next !== selfCell || selfCell.prev !== selfCell) {
    // eslint-disable-next-line no-restricted-globals
    throw TypeError('Expected self-linked cell');
  }
  const cell = selfCell;
  // rename variable cause it isn't self-linked after this point.

  const next = prev.next;
  cell.prev = prev;
  cell.next = next;
  prev.next = cell;
  next.prev = cell;
  // Not frozen!
  return cell;
}
Splices a self-linked non-sigil cell into a ring after `prev`.
`prev` could be the head sigil, or it could be some other non-sigil
cell within a ring.

@template Data
@param {DoublyLinkedCell<Data>} prev
@param {DoublyLinkedCell<Data>} selfCell