def root(self, node):
        """ Returns the :class:`CTENode` which is the root of the tree in which
            the given `node` participates (or `node` if it is a root node). This
            method functions through the :meth:`get` method.

            :param node: A :class:`CTENode` whose root is required.

            :return: A :class:`CTENode` which is the root of the tree in which
                the given `node` participates (or the given `node` if it is a
                root node).
        """
        # We need to use the path virtual field, so ensure it exists.
        self._ensure_virtual_fields(node)
        return self.get(pk=getattr(node, self.model._cte_node_path)[0])