code: def get_changes(self, fixer=str.lower,
                      task_handle=taskhandle.NullTaskHandle()):
          
          stack = changestack.ChangeStack(self.project, 'Fixing module names')
          jobset = task_handle.create_jobset('Fixing module names',
                                             self._count_fixes(fixer) + 1)
          try:
              while True:
                  for resource in self._tobe_fixed(fixer):
                      jobset.started_job(resource.path)
                      renamer = rename.Rename(self.project, resource)
                      changes = renamer.get_changes(fixer(self._name(resource)))
                      stack.push(changes)
                      jobset.finished_job()
                      break
                  else:
                      break
          finally:
              jobset.started_job('Reverting to original state')
              stack.pop_all()
              jobset.finished_job()
          return stack.merged()
docs: Fix module names
  
          `fixer` is a function that takes and returns a `str`.  Given
          the name of a module, it should return the fixed name.