code: function (dataset, opts) {
              opts = isUndefined(opts) ? {} : opts;
              if (!isHash(opts)) {
                  opts = {all: opts};
              }
              return this.compoundClone("union", dataset, opts);
          }
docs: Adds a UNION clause using a second dataset object.
  A UNION compound dataset returns all rows in either the current dataset
  or the given dataset.
  Options:
  :alias :: Use the given value as the from_self alias
  :all :: Set to true to use UNION ALL instead of UNION, so duplicate rows can occur
  :from_self :: Set to false to not wrap the returned dataset in a from_self, use with care.
  
  @example
  DB.from("items").union(DB.from("otherItems")).sql;
  //=> SELECT * FROM items UNION SELECT * FROM other_items
  
  DB.from("items").union(DB.from("otherItems"), {all : true, fromSelf : false}).sql;
  //=> SELECT * FROM items UNION ALL SELECT * FROM other_items
  
  DB.from("items").union(DB.from("otherItems"), {alias : "i"})
  //=> SELECT * FROM (SELECT * FROM items UNION SELECT * FROM other_items) AS i
  
  @param {patio.Dataset} dataset dataset to union with
  @param {Object} opts addional options
  @param {String|patio.sql.Identifier} [opts.alias] Alias to use as the fromSelf alias.
  @param {Boolean} [opt.all=false] Set to true to use UNION ALL instead of UNION so duplicate rows can occur
  @param {Boolean} [opts.fromSelf=true] Set to false to not wrap the returned dataset in a fromSelf.
  
  @return {patio.Dataset} a cloned dataset with the union.