def create_subtree(self, paths): node = self._parent.root assert isinstance(paths, list) assert isinstance(node, Tree) last = None while True: last, failed_resource = node.find_complete_last(paths) if failed_resource is None: break resource = Resource(name="subtree", visible=True, observable=False, allow_children=True) method = getattr(resource, "new_resource", None) resource = method() resource.payload = None resource.path = failed_resource last.add_child(resource) return last