func (da *cedar) pushSibling(from, base int, label byte, hasChild bool) {
	c := &da.Ninfos[from].Child
	keepOrder := *c == 0
	if da.Ordered {
		keepOrder = label > *c
	}
	if hasChild && keepOrder {
		c = &da.Ninfos[base^int(*c)].Sibling
		for da.Ordered && *c != 0 && *c < label {
			c = &da.Ninfos[base^int(*c)].Sibling
		}
	}
	da.Ninfos[base^int(label)].Sibling = *c
	*c = label
}
func (da *cedar) pushSibling(from, base int, label byte, hasChild bool) {
	c := &da.Ninfos[from].Child
	keepOrder := *c == 0
	if da.Ordered {
		keepOrder = label > *c
	}
	if hasChild && keepOrder {
		c = &da.Ninfos[base^int(*c)].Sibling
		for da.Ordered && *c != 0 && *c < label {
			c = &da.Ninfos[base^int(*c)].Sibling
		}
	}
	da.Ninfos[base^int(label)].Sibling = *c
	*c = label
}
func ( da * cedar ) pushSibling ( from , base int , label byte , hasChild bool ) { c := & da . Ninfos [ from ] . Child keepOrder := * c == 0 if da . Ordered { keepOrder = label > * c } if hasChild && keepOrder { c = & da . Ninfos [ base ^ int ( * c ) ] . Sibling for da . Ordered && * c != 0 && * c < label { c = & da . Ninfos [ base ^ int ( * c ) ] . Sibling } } da . Ninfos [ base ^ int ( label ) ] . Sibling = * c * c = label }
// hasChild: wherether the `from` node has children
hasChild : wherether the from node has children