<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rename_component(self, old_component, new_component):
 """ Change the label of a component attached to the Bundle :parameter str old_component: the current name of the component (must exist) :parameter str new_component: the desired new name of the component (must not exist) :return: None :raises ValueError: if the new_component is forbidden """

        # TODO: raise error if old_component not found?

        # even though _rename_tag will call _check_label again, we should
        # do it first so that we can raise any errors BEFORE we start messing
        # with the hierarchy
        self._check_label(new_component)
        # changing hierarchy must be called first since it needs to access
        # the kind of old_component
        if len([c for c in self.components if new_component in c]):
            logger.warning("hierarchy may not update correctly with new component")
        self.hierarchy.rename_component(old_component, new_component)

        self._rename_label('component', old_component, new_component)

        self._handle_dataset_selectparams()