def METHOD_NAME(self, atom):
    """Alter choice point atom set.
    :param atom: set of package atoms
    :type atom: set of :obj:`pkgcore.ebuild.atom.atom`
    :return: True if no more pkgs remain or atoms were removed,
        False if no atoms were removed
    """
    if self.matches is None:
        raise IndexError("no solutions remain")
    if hasattr(atom, "__contains__") and not isinstance(atom, str):
        self.solution_filters.update(atom)
    else:
        self.solution_filters.add(atom)
    filterset = self.solution_filters
    if self.matches_cur is None:
        if not self._internal_force_next():
            return True
    round = -1
    while True:
        round += 1
        if round:
            if not self._internal_force_next():
                return True
        for depset_name in ("_bdeps", "_deps", "_rdeps", "_prdeps"):
            depset = getattr(self, depset_name)
            reqs = list(self._filter_choices(depset, filterset))
            if len(reqs) != len(depset):
                break
            setattr(self, depset_name, reqs)
        else:
            return round > 0