code: func (n *node) sortChildren() {
  	sort.Slice(n.children, func(i, j int) bool {
  		a := n.children[i]
  		b := n.children[j]
  		return a.isParameter() && b.isParameter() && a.re != nil ||
  			!a.isParameter() && b.isParameter() ||
  			a.countChildren() > b.countChildren()
  	})
  }
docs: // sortChildren puts children with most subnodes on top, plain strings before parameters, and parameters with regular expressions before the parameter without.