code: func (c *Category) AddBuilder(categories []string, builder *BuilderRef) {
  	current := c
  	current.cachedNumLeafNodes = -1
  	for _, category := range categories {
  		if child, ok := current.childrenMap[category]; ok {
  			original := child.(*Category)
  			original.cachedNumLeafNodes = -1
  			current = original
  		} else {
  			newChild := NewCategory(category)
  			current.childrenMap[category] = ConsoleElement(newChild)
  			current.children = append(current.children, ConsoleElement(newChild))
  			current = newChild
  		}
  	}
  	current.childrenMap[builder.ID] = ConsoleElement(builder)
  	current.children = append(current.children, ConsoleElement(builder))
  }
docs: // AddBuilder inserts the builder into this Category tree.
  //
  // AddBuilder will create new subcategories as a chain of Category structs
  // as needed until there are no categories remaining. The builder is then
  // made a child of the deepest such Category.