def METHOD_NAME(self, *descendants):
    # first try to find child in current paths
    paths = []
    if not descendants:
        return self
    for path in (p.METHOD_NAME(*descendants) for p in self._paths):
        if path.exists():
            if path.is_dir():
                # If it's a dir, try to combine it with others
                paths.append(path)
            else:
                # If it's a file, immediately return it
                return path
    # if it does not exist, construct it with the first path
    return ResourcePath(*paths) if len(paths) > 1 else \
        paths[0] if len(paths) == 1 else self._paths[0].METHOD_NAME(*descendants)