def find_node(self, lst):
        if is_string(lst):
            lst = [x for x in split_path(lst) if x and x != '.']

        cur = self
        for x in lst:
            if x == '..':
                cur = cur.parent
                continue

            try:
                if x in cur.children:
                    cur = cur.children[x]
                    continue
            except:
                cur.children = {}

            # optimistic: create the node first then look if it was correct to do so
            cur = self.__class__(x, cur)
            try:
                os.stat(cur.abspath())
            except:
                del cur.parent.children[x]
                return None

        ret = cur

        try:
            while not getattr(cur.parent, 'cache_isdir', None):
                cur = cur.parent
                cur.cache_isdir = True
        except AttributeError:
            pass

        return ret
Constructs a :class:`revscoring.Datasource` that generates a `list` of
dataset/ETHPy150Open cournape/Bento/bento/core/node.py/Node.find_node--crossover with--dataset/ETHPy150Open wiki-ai/revscoring/revscoring/features/wikitext/datasources/parsed.py/Revision.external_link_urls_matching