code: public static MaybeAssignedSet join(MaybeAssignedSet left, MaybeAssignedSet right) {
  		if (left == null && right == null) {
  			return null;
  		} else if (left == null) {
  			return right;
  		} else if (right == null) {
  			return left;
  		} else {
  			return left.join(right);
  		}
  	}
docs: join two sets of definitely assigned variables together. This allows for the
  possibility that either or both arguments are null. The join itself is
  corresponds to the intersection of both sets.
  
  @param left
  @param right
  @return