code: func (n *routeNode) insertChild(nn *routeNode) *routeNode {
  	if child := n.findChild(nn); child != nil {
  		return child
  	}
  
  	if n.paramChild != nil && nn.paramNode {
  		// only allow one param child, unique param name
  		if n.paramChild.paramName != nn.paramName {
  			panic("Param name must be same for")
  		}
  		return n.paramChild
  	}
  	if nn.paramNode {
  		n.paramChild = nn
  	} else {
  		n.children = append(n.children, nn)
  	}
  	return nn
  }
docs: // insertChild registers given node in the route node tree
  // If there is already a similar node it will not insert new node
  // The returned node is always the registered one ie either
  // newly registered or the old one