docs: def remove(self, state_element, recursive=True, force=False, destroy=True):
          """Remove item from state
  
          :param StateElement state_element: State element to be removed
          :param bool recursive: Only applies to removal of state and decides whether the removal should be called
              recursively on all child states
          :param bool force: if the removal should be forced without checking constraints
          :param bool destroy: a flag that signals that the state element will be fully removed and disassembled
          """
          if isinstance(state_element, Income):
              self.remove_income(force, destroy=destroy)
          if isinstance(state_element, Outcome):
              return self.remove_outcome(state_element.outcome_id, force=force, destroy=destroy)
          elif isinstance(state_element, InputDataPort):
              return self.remove_input_data_port(state_element.data_port_id, force, destroy=destroy)
          elif isinstance(state_element, OutputDataPort):
              return self.remove_output_data_port(state_element.data_port_id, force, destroy=destroy)
          else:
              raise ValueError("Cannot remove state_element with invalid type")