<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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()