'Returns a node, or None if no such node exists'

def _findNode(self, src, *path):

    if (not path):
        return src
    (attrs, itms) = self._inspect(src)
    next = None
    if (path[0] == '..'):
        next = (src.parent or src)
    else:
        for trans in [str, int]:
            try:
                tpath = trans(path[0])
            except ValueError:
                continue
            if (attrs and (tpath in attrs)):
                next = getattr(src, tpath)
            elif (itms and (tpath in itms)):
                next = src[tpath]
    if next:
        if path[1:]:
            return self._findNode(next, *path[1:])
        else:
            return next
    else:
        return None
