code: func mergeSlice(m1, m2 []merger) []merger {
  	r := make([]merger, len(m1), len(m1)+len(m2))
  	copy(r, m1)
  
  	m := map[string]struct{}{}
  	for _, v2 := range m2 {
  		// If we already saw it, just append it because its a
  		// duplicate and invalid...
  		name := v2.mergerName()
  		if _, ok := m[name]; ok {
  			r = append(r, v2)
  			continue
  		}
  		m[name] = struct{}{}
  
  		// Find an original to override
  		var original merger
  		originalIndex := -1
  		for i, v := range m1 {
  			if v.mergerName() == name {
  				originalIndex = i
  				original = v
  				break
  			}
  		}
  
  		var v merger
  		if original == nil {
  			v = v2
  		} else {
  			v = original.mergerMerge(v2)
  		}
  
  		if originalIndex == -1 {
  			r = append(r, v)
  		} else {
  			r[originalIndex] = v
  		}
  	}
  
  	return r
  }
docs: // mergeSlice merges a slice of mergers.