code: function observeFooters(container, stickySelector = STICKY_SELECTOR) {
    const observer = new IntersectionObserver((records) => {
      records.forEach((record) => {
        const { boundingClientRect, rootBounds } = record;
        const stickyTarget = record.target.parentElement.querySelector(stickySelector);
  
        if (boundingClientRect.top < rootBounds.top && boundingClientRect.bottom < rootBounds.bottom) {
          fire(false, stickyTarget);
        }
  
        else if (boundingClientRect.bottom > rootBounds.top && isSticking(stickyTarget)) {
          fire(true, stickyTarget);
        }
      });
    }, Object.assign({
      threshold: [1],
    }, !(container instanceof HTMLDocument) && {
      root: container
    }));
  
    // Add the bottom sentinels to each section and attach an observer.
  
    const sentinels = addSentinels(container, ClassName.SENTINEL_BOTTOM, stickySelector);
  
    sentinels.forEach(sentinel => observer.observe(sentinel));
  
    return {
      container,
      observer,
      sentinels,
    };
  }
docs: Sets up an intersection observer to notify `document` when elements with the `ClassName.SENTINEL_BOTTOM` become
  visible/hidden at the bottom of the sticky container.
  
  @param {Element|HTMLDocument} container  The DOM element that contains your sticky elements
  @param {string} stickySelector           The CSS selector applied to the sticky DOM elements
  @returns {{container: *, observer: IntersectionObserver, sentinels: Array<Element>}}