class Union implements PointsToSet {
  /**
   * Adds all objects in s into this union of sets, returning true if this union was changed.
   */
  public abstract boolean addAll(PointsToSet s);

  public static boolean hasNonEmptyIntersection(PointsToSet s1, PointsToSet s2) {<FILL_FUNCTION_BODY>}

  @Override
  public Set<String> possibleStringConstants() {
    return null;
  }

  @Override
  public Set<ClassConstant> possibleClassConstants() {
    return null;
  }
}

    if (s1 == null) {
      return false;
    }
    if (s1 instanceof Union) {
      return s1.hasNonEmptyIntersection(s2);
    }
    if (s2 == null) {
      return false;
    }
    return s2.hasNonEmptyIntersection(s1);
  
<no_super_class>