use just `return Union(arg.boundary for arg in self.args)`?