code: def findByNodePath(self, nodePath):
          
          def _auxGetByPath(parts, item):
              "Aux function that does the actual recursive search"
              #logger.debug("_auxGetByPath item={}, parts={}".format(item, parts))
  
              if len(parts) == 0:
                  return item
  
              head, tail = parts[0], parts[1:]
              if head == '':
                  # Two consecutive slashes. Just go one level deeper.
                  return _auxGetByPath(tail, item)
              else:
                  childItem = item.childByNodeName(head)
                  return _auxGetByPath(tail, childItem)
  
          # The actual body of findByNodePath starts here
  
          check_is_a_string(nodePath)
          assert not nodePath.startswith('/'), "nodePath may not start with a slash"
  
          if not nodePath:
              raise IndexError("Item not found: {!r}".format(nodePath))
  
          return _auxGetByPath(nodePath.split('/'), self)
docs: Recursively searches for the child having the nodePath. Starts at self.