def add_note(
            self,
            note):
        """*Add a note to this taskpaper object*

        **Key Arguments:**
            - ``note`` -- the note (string)

        **Return:**
            - None

        **Usage:**

            To add a note to a document, project or task object:

            .. code-block:: python

                newNote = doc.add_note(And another note with a link http://www.thespacedoctor.co.uk")
        """
        self.refresh
        note = note.strip()

        newNote = self._get_object(
            regex=re.compile(
                r'((?<=\n)|(?<=^))(?P<title>\S(?<!-)((?!(: +@|: *\n|: *$)).)*)\s*?(\n|$)(?P<tagString>&&&)?(?P<content>&&&)?', re.UNICODE),
            objectType="note",
            content=note
        )

        # ADD DIRECTLY TO CONTENT IF THE PROJECT IS BEING ADDED SPECIFICALLY TO
        # THIS OBJECT
        oldContent = self.to_string(indentLevel=1)
        newContent = self.to_string(
            indentLevel=1)

        if self.parent:
            self.parent._update_document_tree(
                oldContent=oldContent,
                newContent=newContent
            )

        self.notes = newNote + self.notes
        self.content = self.content.replace(self.to_string(indentLevel=0, title=False), self.to_string(
            indentLevel=0, title=False))

        doc = self
        while doc.parent:
            doc = doc.parent
        doc.refresh

        return newNote[0]