docs: function (name, nonRecursive, recursive, opts) {
              if (!this.supportsCte) {
                  throw new QueryError("This dataset does not support common table expressions");
              }
              opts = opts || {};
              var wit = (this.__opts["with"] || []).concat([merge(opts, {recursive: true, name: this.stringToIdentifier(name), dataset: nonRecursive.union(recursive, {all: opts.unionAll !== false, fromSelf: false})})]);
              return this.mergeOptions({"with": wit});
          }