func ForAccounts(existing []v1.ServiceAccount, desired []v1.ServiceAccount) Account {
	update := []v1.ServiceAccount{}
	mcreate := accountMap(desired)
	mdelete := accountMap(existing)
	for k, v := range mcreate {
		if t, ok := mdelete[k]; ok {
			tp := t.DeepCopy()
			util.InitObjectMeta(tp)
			tp.ObjectMeta.OwnerReferences = v.ObjectMeta.OwnerReferences
			for k, v := range v.ObjectMeta.Annotations {
				tp.ObjectMeta.Annotations[k] = v
			}
			for k, v := range v.ObjectMeta.Labels {
				tp.ObjectMeta.Labels[k] = v
			}
			update = append(update, *tp)
			delete(mcreate, k)
			delete(mdelete, k)
		}
	}
	return Account{
		Create: accountList(mcreate),
		Update: update,
		Delete: accountList(mdelete),
	}
}
ForAccounts builds a new Account inventory based on the existing and desired states
package inventory
import (
	"fmt"
	v1 "k8s.io/api/core/v1"
	"github.com/jaegertracing/jaeger-operator/pkg/util"
)
type Account struct {
	Create []v1.ServiceAccount
	Update []v1.ServiceAccount
	Delete []v1.ServiceAccount
}