docs: function customShadowRoot(selector, starting) {
      var selectors = selector.split('::sr');
      if (selectors.length === 0) {
          return [];
      }
  
      var shadowDomInUse = (document.head.createShadowRoot || document.head.attachShadow);
      var getShadowRoot = function (el) {
          return ((el && shadowDomInUse) ? el.shadowRoot : el);
      };
      var findAllMatches = function (selector /*string*/, targets /*array*/, firstTry /*boolean*/) {
          var scope, i, matches = [];
          for (i = 0; i < targets.length; ++i) {
              scope = (firstTry) ? targets[i] : getShadowRoot(targets[i]);
              if (scope) {
                  if (selector === '') {
                      matches.push(scope);
                  } else {
                      Array.prototype.push.apply(matches, scope.querySelectorAll(selector));
                  }
              }
          }
          return matches;
      };
  
      var matches = findAllMatches(selectors.shift().trim(), [starting || document], true);
      while (selectors.length > 0 && matches.length > 0) {
          matches = findAllMatches(selectors.shift().trim(), matches, false);
      }
      return matches;
  }