docs: function traverseSiblingsUntilRootOfBranch(element, callback, predicate) {
      // ---------------------------------------------- input arguments processing
  
      if (predicate == null) {
          predicate = function(element) {
              return element != null && element != document.body;
          };
      }
  
      // -------------------------------------------------------------- processing
  
      var currentElement = element;
      var results = [];
  
      /* eslint-disable no-loop-func */
      while (predicate(currentElement)) {
          var siblings = getSiblings(currentElement).siblings;
          results.push(ariaUtilsArray.map(siblings, function(sibling) {
              return callback(sibling, currentElement, element);
          }));
  
          currentElement = currentElement.parentElement;
      }
      /* eslint-enable no-loop-func */
  
      // ------------------------------------------------------------------ return
  
      return results;
  }