code: func (v mergeVal) Name() string {
  	type namedValue interface {
  		Name() string
  	}
  	if nVal, ok := v.Value.(namedValue); ok {
  		return nVal.Name()
  	}
  	return v.key
  }
docs: // Name returns the name of a mergeVal.
  // If the original value had a name, return the original name,
  // otherwise, return the key assigned to this mergeVal.