package dagro

import gosort 

func initOrder( *Graph) [][]string {
	return initOrderNodes(, .Nodes())
}

func initOrderNodes( *Graph,  []string) [][]string {
	 := map[string]bool{}
	 := make([]string, 0, .NodeCount())
	for ,  := range  {
		if len(.Children()) == 0 {
			 = append(, )
		}
	}
	if len() == 0 {
		return nil
	}

	 := -1
	for ,  := range  {
		 := integer(asAttrs(.Node()), "rank")
		if  >  {
			 = 
		}
	}
	 := make([][]string, +1)

	var  func(string)
	 = func( string) {
		if [] {
			return
		}
		[] = true
		 := asAttrs(.Node())
		 := integer(, "rank")
		[] = append([], )
		for ,  := range .Successors() {
			()
		}
	}

	 := append([]string(nil), ...)
	gosort.SliceStable(, func(,  int) bool {
		return num(asAttrs(.Node([])), "rank") < num(asAttrs(.Node([])), "rank")
	})
	for ,  := range  {
		()
	}

	return 
}