docs: def find_schedules(self, courses=None, return_generator=False):
          """Returns all the possible course combinations. Assumes no duplicate courses.
  
          ``return_generator``: If True, returns a generator instead of collection. Generators
              are friendlier to your memory and save computation time if not all solutions are
              used.
          """
          self.p.reset()
          self.create_variables(courses)
          self.create_constraints(courses)
          if return_generator:
              return self.p.iter_solutions()
          return self.p.get_solutions()