docs: function (columns, patterns, opts) {
              opts = isUndefined(opts) ? {} : opts;
              var conds;
              if (opts.hasOwnProperty("allPatterns")) {
                  conds = array.toArray(patterns).map(function (pat) {
                      return BooleanExpression.fromArgs(
                          [(opts.allColumns ? "AND" : "OR")]
                              .concat(array.toArray(columns)
                                  .map(function (c) {
                                      return StringExpression.like(c, pat, opts);
                                  })));
                  });
                  return this.filter(BooleanExpression.fromArgs([opts.allPatterns ? "AND" : "OR"].concat(conds)));
              } else {
                  conds = array.toArray(columns)
                      .map(function (c) {
                          return BooleanExpression.fromArgs(["OR"].concat(array.toArray(patterns).map(function (pat) {
                              return StringExpression.like(c, pat, opts);
                          })));
                      });
                  return this.filter(BooleanExpression.fromArgs([opts.allColumns ? "AND" : "OR"].concat(conds)));
              }
          }