code: public Attributes union(Attributes that)
      {
          Attributes result = new Attributes(this);
          if (that != null) result.attributes.putAll(that.attributes);
          return result;
      }
docs: Adds the attributes of the given <code>Attributes</code> object to this <code>Attributes</code> object,
  replacing duplicates, returning a new <code>Attributes</code> object.
  If the given <code>Attributes</code> is null, a clone of this <code>Attributes</code> object will be returned.
  If this <code>Attributes</code> contains a tag that exists in the given <code>Attributes</code>, the merged
  <code>Attributes</code> will contain the value from the given <code>Attributes</code> object (overwriting the one
  from this <code>Attributes</code> object).
  
  @param that The <code>Attributes</code> to unite with
  @return A new <code>Attributes</code> object containing the union of the attributes.
  @see #complement(Attributes)
  @see #intersect(Attributes)