<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def to_vobject(self, project=None, uid=None):
 """Return vObject object of Taskwarrior tasks If filename and UID are specified, the vObject only contains that task. If only a filename is specified, the vObject contains all events in the project. Otherwise the vObject contains all all objects of all files associated with the IcsTask object. project -- the Taskwarrior project uid -- the UID of the task """

        self._update()
        vtodos = iCalendar()

        if uid:
            uid = uid.split('@')[0]
            if not project:
                for p in self._tasks:
                    if uid in self._tasks[p]:
                        project = p
                        break
            self._gen_vtodo(self._tasks[basename(project)][uid], vtodos.add('vtodo'))
        elif project:
            for task in self._tasks[basename(project)].values():
                self._gen_vtodo(task, vtodos.add('vtodo'))
        else:
            for project in self._tasks:
                for task in self._tasks[project].values():
                    self._gen_vtodo(task, vtodos.add('vtodo'))

        return vtodos