def _to_node_dict(self):
        """Construct the graph of nodes if it hasn't already been made.
        """
        if self._root is None:
            make_nd = self.factory.make_node
            # Start with the smallest possible tree
            self._root = make_nd(NAME_PREFIX + '_root')
            self._add_node(self._root)
            # The final end marker is needed to give any trailing comments
            # a parent node to attach themselves to.
            end_marker_node = make_nd(NAME_PREFIX + END_MARKER)

            self._to_node_dict2(self._root,
                                self._nested_list + [end_marker_node])
            # Remove the end marker unless it contains a trailing comment
            if not end_marker_node.comments:
                self._remove_node(end_marker_node)
            self._make_tree_lines()
            self._nodes['_tree'] = self.padded_tree_lines
            self._nodes = sets_to_sorted_lists(self._nodes)
 def test_sets_to_sorted_lists(self):
     nodes = {'_leaves': set(['alpha', 'delta', 'four', 'gamma'])}
     assert sets_to_sorted_lists(nodes) == {'_leaves': ['alpha', 'delta',
                                                        'four', 'gamma']}
     # But lists are not sorted
     nodes = {'alist': ['zoo', 'yacht', 'windmill']}
     assert sets_to_sorted_lists(nodes) == nodes
     nodes = {'simple': 'plain', 'fruit': 'scone', 'empty': {},
              'number': 5}
     assert sets_to_sorted_lists(nodes) == {
         'simple': 'plain', 'fruit': 'scone', 'empty': {}, 'number': 5}
     nodes = {'four': {'groups': set(['_root'])}}
     assert sets_to_sorted_lists(nodes) == {'four': {'groups': ['_root']}}
     nodes = {}
     assert sets_to_sorted_lists(nodes) == {}
     nodes = {'empty': {}}
     assert sets_to_sorted_lists(nodes) == {'empty': {}}