code: protected static SemanticType intersectionHelper(SemanticType lhs, SemanticType rhs) {
  		if (lhs.equals(rhs)) {
  			return lhs;
  		} else if (lhs instanceof Type.Void) {
  			return lhs;
  		} else if (rhs instanceof Type.Void) {
  			return rhs;
  		} else {
  			return new SemanticType.Intersection(new SemanticType[] { lhs, rhs });
  		}
  	}
docs: Provides a simplistic form of type intersect which, in some cases, does
  slightly better than simply creating a new intersection. For example,
  intersecting <code>int</code> with <code>int</code> will return
  <code>int</code> rather than <code>int&int</code>.
  
  @param lhs
  @param rhs
  @return