Recursively traverses each tree (starting from each root) in order
            to generate a dictionary-based tree structure of the entire forest.
            Each level of the forest/tree is a list of nodes, and each node
            consists of a dictionary representation, where the entry
            ``children`` (by default) consists of a list of dictionary
            representations of its children.

            See :meth:`CTENodeManager.as_tree` and
            :meth:`CTENodeManager.node_as_tree` for details on how this method
            works, as well as its expected arguments.

            :param visitor: optional function responsible for generating the
                dictionary representation of a node.

            :param children: optional function responsible for generating a
                children key and list for a node.

            :return: a dictionary representation of the structure of the forest.

def as_tree(self, visitor=None, children=None):
        """ Recursively traverses each tree (starting from each root) in order
            to generate a dictionary-based tree structure of the entire forest.
            Each level of the forest/tree is a list of nodes, and each node
            consists of a dictionary representation, where the entry
            ``children`` (by default) consists of a list of dictionary
            representations of its children.

            See :meth:`CTENodeManager.as_tree` and
            :meth:`CTENodeManager.node_as_tree` for details on how this method
            works, as well as its expected arguments.

            :param visitor: optional function responsible for generating the
                dictionary representation of a node.

            :param children: optional function responsible for generating a
                children key and list for a node.

            :return: a dictionary representation of the structure of the forest.
        """
        _parameters = {"node": self}
        if visitor is not None:
            _parameters["visitor"] = visitor
        if children is not None:
            _parameters["children"] = children
        return self.__class__.objects.node_as_tree(**_parameters)