def METHOD_NAME(self) -> OperatorBase:
    reduced_ops = [op.METHOD_NAME() for op in self.oplist]
    if self._is_empty():
        return self.__class__([], coeff=self.coeff, abelian=self.abelian)
    reduced_ops = METHOD_NAME(lambda x, y: x.tensor(y), reduced_ops) * self.coeff
    if isinstance(reduced_ops, ListOp) and len(reduced_ops.oplist) == 1:
        return reduced_ops.oplist[0]
    else:
        return cast(OperatorBase, reduced_ops)