code: func AddMetadata(structure interface{}, node *Node) error {
  	if node == nil {
  		return nil
  	}
  
  	if len(node.Children) == 0 {
  		return fmt.Errorf("invalid node %s: no child", node.Name)
  	}
  
  	if structure == nil {
  		return errors.New("nil structure")
  	}
  
  	rootType := reflect.TypeOf(structure)
  	node.Kind = rootType.Kind()
  
  	return browseChildren(rootType, node)
  }
docs: // AddMetadata Adds metadata to a node.
  // nodes + element -> nodes