docs: def satisfies_constraints(self, possible_solution):
          """Return True if the given solution is satisfied by all the constraints."""
          for c in self._constraints:
              values = c.extract_values(possible_solution)
              if any(type(v) is NilObject for v in values) or not c(*values):
                  return False
          return True