code: def combinations(self):
          
          keys = self._vars.keys()
          for result in product(*self._vars.values()):
              possible_solution = {}
              for i, v in enumerate(result):
                  possible_solution[keys[i]] = v
              yield possible_solution
docs: Returns a generator of all possible combinations.