func (v retainKeysStrategy) MergePrimitive(diff apply.PrimitiveElement) (apply.Result, error) {
	return apply.Result{}, fmt.Errorf("Cannot use retainkeys with primitive element %v", diff.Name)
}
MergePrimitive returns an error.  Only TypeElements can have retainKeys.
package strategy
import (
	"fmt"
	"k8s.io/kubectl/pkg/apply"
)
func createRetainKeysStrategy(options Options, strategic *delegatingStrategy) retainKeysStrategy {
	return retainKeysStrategy{
		&mergeStrategy{strategic, options},
		strategic,
		options,
	}
}
type retainKeysStrategy struct {
	merge     *mergeStrategy
	strategic *delegatingStrategy
	options   Options
}
func (v retainKeysStrategy) MergeType(e apply.TypeElement) (apply.Result, error) {
	if result, done := v.merge.doAddOrDelete(&e); done {
		return result, nil
	}
	elem := map[string]apply.Element{}
	for key := range e.GetLocalMap() {
		elem[key] = e.GetValues()[key]
	}
	return v.merge.doMergeMap(elem)
}
func (v retainKeysStrategy) MergeMap(e apply.MapElement) (apply.Result, error) {
	return apply.Result{}, fmt.Errorf("Cannot use retainkeys with map element %v", e.Name)
}
func (v retainKeysStrategy) MergeList(e apply.ListElement) (apply.Result, error) {
	return apply.Result{}, fmt.Errorf("Cannot use retainkeys with list element %v", e.Name)
}