code: func mergeLinkAttribute(master, current linkAttributers, result map[string][]string, nest *int) map[string][]string {
  	if current == nil {
  		current = master
  	}
  
  	if result == nil {
  		result = map[string][]string{}
  	}
  
  	if nest == nil {
  		i := 0
  		nest = &i
  	}
  
  	for _, v := range current {
  		links := v.linkValues()
  		if len(links) > 0 {
  			ls := master.find(links)
  			for _, iv := range ls {
  				if len(result[iv.GetName()]) == 0 {
  					result[iv.GetName()] = append(result[iv.GetName()], iv.value()...)
  					*nest++
  					result = mergeLinkAttribute(master, ls, result, nest)
  					*nest--
  				}
  			}
  			if *nest == 0 {
  				for _, rv := range result {
  					v.setLinkValues(rv)
  				}
  				result = map[string][]string{}
  			}
  		}
  	}
  	return result
  }
docs: // Userは公開鍵をlink_usersから取得して、自身の鍵としてマージする
  // Groupはグループのメンバーをlink_groupから取得して、自身のメンバーとしてマージする