Adds an assignment of package as a decision
        and increments the decision level.

def decide(self, package):  # type: (Package) -> None
        """
        Adds an assignment of package as a decision
        and increments the decision level.
        """
        # When we make a new decision after backtracking, count an additional
        # attempted solution. If we backtrack multiple times in a row, though, we
        # only want to count one, since we haven't actually started attempting a
        # new solution.
        if self._backtracking:
            self._attempted_solutions += 1

        self._backtracking = False
        self._decisions[package.name] = package

        self._assign(
            Assignment.decision(package, self.decision_level, len(self._assignments))
        )