'Set the `item`s selection state to `select_state`
:param item: QGraphicsItem.
:param bool state: New selection state for item.'

def select_item(self, item, state):

    if (((state is False) and (item not in self._selection)) or ((state == True) and (item in self._selection))):
        return
    if (item in self._selection):
        if (state == False):
            self._remove_selection(item)
            self.selectionChanged.emit()
    else:
        super_selection = self._selected_super_item(item)
        if super_selection:
            self._remove_selection(super_selection)
        sub_selections = self._selected_sub_items(item)
        for sub in sub_selections:
            self._remove_selection(sub)
        if state:
            self._add_selection(item)
            self._re_enumerate_selections()
        elif (item in self._selection):
            self._remove_selection(item)
        self.selectionChanged.emit()
