docs: def remove_state(self, state_id, recursive=True, force=False, destroy=True):
          """Remove a state from the container state.
  
          :param state_id: the id of the state to remove
          :param recursive: a flag to indicate a recursive disassembling of all substates
          :param force: a flag to indicate forcefully deletion of all states (important for the decider state in the
                  barrier concurrency state)
          :param destroy: a flag which indicates if the state should not only be disconnected from the state but also
                  destroyed, including all its state elements
          :raises exceptions.AttributeError: if state.state_id does not
          """
          if state_id not in self.states:
              raise AttributeError("State_id %s does not exist" % state_id)
  
          if state_id == self.start_state_id:
              self.set_start_state(None)
  
          # first delete all transitions and data_flows, which are connected to the state to be deleted
          keys_to_delete = []
          for key, transition in self.transitions.items():
              if transition.from_state == state_id or transition.to_state == state_id:
                  keys_to_delete.append(key)
          for key in keys_to_delete:
              self.remove_transition(key, True)
  
          keys_to_delete = []
          for key, data_flow in self.data_flows.items():
              if data_flow.from_state == state_id or data_flow.to_state == state_id:
                  keys_to_delete.append(key)
          for key in keys_to_delete:
              self.remove_data_flow(key)
  
          if recursive and not destroy:
              raise AttributeError("The recursive flag requires the destroy flag to be set, too.")
  
          if destroy:
              # Recursively delete all transitions, data flows and states within the state to be deleted
              self.states[state_id].destroy(recursive)
  
          # final delete the state it self
          self.states[state_id].parent = None
          return self.states.pop(state_id)