code: public Fields union(Fields fields) {
  		
  		assertNotNull(fields);
  		
  		Set<Field> view = new HashSet<Field>(this.fields);
  		view.addAll(new HashSet<Field>(fields.fields));
  		
  		return new Fields(view);
  	}
docs: <p>Finds the <b>union</b> between this instance and a supplied instance. Returns a new instance
  of {@link Fields} which contains a <b>set of all</b> the {@link Field}s which in both this instance
  and the supplied instance.</p>
  
  <p><pre>
  Union can be expressed as,
  <code>
  A &cup; B = { x : x &isin; A or x &isin; B }
  </code>
  where,
  
  A = this Fields instance
  B = supplied Fields instance
  x = any field from the resulting Fields instance
  </pre></p>
  
  @param fields
  the instance of {@link Fields} whose {@link Field}s are added to this instance
  <br><br>
  @return a new instance of {@link Fields} which wraps all the unique {@link Field}s in this
  instance and the given instance
  <br><br>
  @since 1.3.0