#TSort implements topological sorting using Tarjan's algorithm for
#strongly connected components.

TSort ϶Ϣʬ˴ؤ Tarjan Υ르ꥺѤ
ȥݥ륽ȤμǤ

#TSort is designed to be able to use with any object which can be interpreted
#as a directed graph.
#TSort requires two methods to interpret a object as a graph:
#tsort_each_node and tsort_each_child.

TSort ǤդΥ֥ȤͭդȤƲǤ褦߷פƤޤ
TSort ֥Ȥ򥰥դȤƲ᤹ˤ2ĤΥ᥽åɤ׵ᤷޤ
ʤtsort_each_node  tsort_each_child Ǥ

# * tsort_each_node is used to iterate for all nodes over a graph.
# * tsort_each_child is used to iterate for child nodes of a given node.

 * tsort_each_node ϥվΤ٤Ƥĺ󤹤ΤѤޤ
 * tsort_each_child Ϳ줿ĺλҤ󤹤ΤѤޤ

#The equality of nodes are defined by eql? and hash since
#TSort uses Hash internally.

ĺƱΤ eql?  hash ˤäޤ
 TSort ǥϥåѤƤ뤫Ǥ