code: def union(self, other, sort=None):
          self._validate_sort_keyword(sort)
          self._assert_can_do_setop(other)
          other, result_names = self._convert_can_do_setop(other)
          if len(other) == 0 or self.equals(other):
              return self
          uniq_tuples = lib.fast_unique_multiple([self._ndarray_values,
                                                  other._ndarray_values],
                                                 sort=sort)
          return MultiIndex.from_arrays(lzip(*uniq_tuples), sortorder=0,
                                        names=result_names)