docs: def remove(self):
          """Remove recursively all children and then the StateView itself
          """
          self.canvas.get_first_view().unselect_item(self)
  
          for child in self.canvas.get_children(self)[:]:
              child.remove()
  
          self.remove_income()
          for outcome_v in self.outcomes[:]:
              self.remove_outcome(outcome_v)
          for input_port_v in self.inputs[:]:
              self.remove_input_port(input_port_v)
          for output_port_v in self.outputs[:]:
              self.remove_output_port(output_port_v)
          for scoped_variable_port_v in self.scoped_variables[:]:
              self.remove_scoped_variable(scoped_variable_port_v)
  
          self.remove_keep_rect_within_constraint_from_parent()
          for constraint in self._constraints[:]:
              self.canvas.solver.remove_constraint(constraint)
              self._constraints.remove(constraint)
          self.canvas.remove(self)