code: function fill(array, value, start = 0, end = array.length) {
    if (typeof array.fill === 'function') {
      array.fill(value, start, end);
    } else {
      for (; start < end; start++) {
        array[start] = value;
      }
  
      return array;
    }
  }
docs: /*
  `SkipList` is a data structure designed with two main uses in mind:
  
  - Given a target value, find the index i in the list such that
  `sum(list[0]..list[i]) <= value < sum(list[0]..list[i + 1])`
  
  - Given the index i (the fulcrum point) from above, get `sum(list[0]..list[i])`
  and `sum(list[i + 1]..list[-1])`
  
  The idea is that given a list of arbitrary heights or widths in pixels, we want to find
  the index of the item such that when all of the items before it are added together, it will
  be as close to the target (scrollTop of our container) as possible.
  
  This data structure acts somewhat like a Binary Search Tree. Given a list of size n, the
  retreival time for the index is O(log n) and the update time should any values change is
  O(log n). The space complexity is O(n log n) in bytes (using Float32Arrays helps a lot
  here), and the initialization time is O(n log n).
  
  It works by constructing layer arrays, each of which is setup such that
  `layer[i] = prevLayer[i * 2] + prevLayer[(i * 2) + 1]`. This allows us to traverse the layers
  downward using a binary search to arrive at the index we want. We also add the values up as we
  traverse to get the total value before and after the final index.