code: @SuppressWarnings("AmbiguousMethodReference")
    public JSType getLeastSupertype(JSType that) {
      if (areIdentical(this, that)) {
        return this;
      }
  
      that = filterNoResolvedType(that);
      if (that.isUnionType()) {
        // Union types have their own implementation of getLeastSupertype.
        return that.toMaybeUnionType().getLeastSupertype(this);
      }
      return getLeastSupertype(this, that);
    }
docs: Gets the least supertype of {@code this} and {@code that}. The least supertype is the join
  (&#8744;) or supremum of both types in the type lattice.
  
  <p>Examples:
  
  <ul>
  <li><code>number &#8744; *</code> = {@code *}
  <li><code>number &#8744; Object</code> = {@code (number, Object)}
  <li><code>Number &#8744; Object</code> = {@code Object}
  </ul>
  
  @return <code>this &#8744; that</code>