def get_task(
            self,
            taskName):
        """*recursively scan this taskpaper object to find a descendant task by name*

        **Key Arguments:**
            - ``taskName`` -- the name, or title, of the task you want to return

        **Return:**
            - ``task`` -- the taskpaper task object you requested (or ``None`` if no task was matched)

        **Usage:**

            .. code-block:: python

                aTask = doc.get_task("cut the grass")
        """

        if taskName[:2] != "- ":
            taskName = "- " + taskName
        task = None
        try:
            self.refresh
        except:
            pass

        # SEARCH TASKS
        for t in self.tasks:
            if t.title.lower() == taskName.lower() and task == None:
                task = t
                break

        # SEARCH TASK CONTENTS
        if task == None:
            for t in self.tasks:
                task = t.get_task(taskName)
                if task:
                    break

        # SEARCH PROJECT CONTENTS
        if task == None and "<Task " not in self.__repr__():
            for p in self.projects:
                task = p.get_task(taskName)
                if task:
                    break

        return task