<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register(self, *dependencies, default=False, hidden=False, ignore_return_code=False):
 """ Decorates a callable to turn it into a task """


        def outer(func):
            task = Task(func, *dependencies, default=default, hidden=hidden, ignore_return_code=ignore_return_code)
            overidden_task = self._tasks.pop(task.name, None)
            if overidden_task:
                self._overidden_tasks[task.name].append(overidden_task)
            self[task.name] = task
            return task

        return outer