def add_edge(self, fro, to):
        """
        When doing topological sorting, the semantics of the edge mean that
        the depedency runs from the parent to the child - which is to say that
        the parent is required to be sorted *before* the child.

                  [ FROM ] ------> [ TO ]
        Committee on Finance -> Subcommittee of the Finance Committee on Budget
                             -> Subcommittee of the Finance Committee on Roads
        """
        self.add_node(fro)
        self.add_node(to)
        self.edges[fro].add(to)