code: function Matcher(matchFunc, toString) {
      this.match = function(expression) {
          // Save/restore marks to ensure that failed matches always restore
          // the original location in the expression.
          var result;
          expression.mark();
          result = matchFunc(expression);
          if (result) {
              expression.drop();
          } else {
              expression.restore();
          }
          return result;
      };
      this.toString = typeof toString === "function" ? toString : function() {
          return toString;
      };
  }
docs: This class implements a combinator library for matcher functions.
  The combinators are described at:
  https://developer.mozilla.org/en-US/docs/Web/CSS/Value_definition_syntax#Component_value_combinators