docs: def forwardCheck(self, variables, domains, assignments, _unassigned=Unassigned):
          """
          Helper method for generic forward checking
  
          Currently, this method acts only when there's a single
          unassigned variable.
  
          @param variables: Variables affected by that constraint, in the
                            same order provided by the user
          @type  variables: sequence
          @param domains: Dictionary mapping variables to their domains
          @type  domains: dict
          @param assignments: Dictionary mapping assigned variables to their
                              current assumed value
          @type  assignments: dict
          @return: Boolean value stating if this constraint is currently
                   broken or not
          @rtype: bool
          """
          unassignedvariable = _unassigned
          for variable in variables:
              if variable not in assignments:
                  if unassignedvariable is _unassigned:
                      unassignedvariable = variable
                  else:
                      break
          else:
              if unassignedvariable is not _unassigned:
                  # Remove from the unassigned variable domain's all
                  # values which break our variable's constraints.
                  domain = domains[unassignedvariable]
                  if domain:
                      for value in domain[:]:
                          assignments[unassignedvariable] = value
                          if not self(variables, domains, assignments):
                              domain.hideValue(value)
                      del assignments[unassignedvariable]
                  if not domain:
                      return False
          return True