func (ref ResourceReference) Copy() ResourceReference {
	return ref
}
Copy makes an independent copy of the ResourceReference
package genruntime
import (
	"fmt"
	"reflect"
)
type KnownResourceReference struct {
	Name string `json:"name"`
}
var _ fmt.Stringer = ResourceReference{}
type ResourceReference struct {
	Group string `json:"group"`
	Kind string `json:"kind"`
	Namespace string `json:"namespace"`
	Name string `json:"name"`
	ARMID string `json:"armId"`
}
func (ref ResourceReference) IsDirectARMReference() bool {
	return ref.ARMID != "" && ref.Namespace == "" && ref.Name == "" && ref.Group == "" && ref.Kind == ""
}
func (ref ResourceReference) IsKubernetesReference() bool {
	return ref.ARMID == "" && ref.Namespace != "" && ref.Name != "" && ref.Group != "" && ref.Kind != ""
}
func (ref ResourceReference) String() string {
	if ref.IsDirectARMReference() {
		return ref.ARMID
	}
	if ref.IsKubernetesReference() {
		return fmt.Sprintf("Group: %q, Kind: %q, Namespace: %q, Name: %q", ref.Group, ref.Kind, ref.Namespace, ref.Name)
	}
	return fmt.Sprintf("Group: %q, Kind: %q, Namespace: %q, Name: %q, ARMID: %q", ref.Group, ref.Kind, ref.Namespace, ref.Name, ref.ARMID)
}
func LookupOwnerGroupKind(v interface{}) (string, string) {
	t := reflect.TypeOf(v)
	field, _ := t.FieldByName("Owner")
	group, ok := field.Tag.Lookup("group")
	if !ok {
		panic("Couldn't find owner group tag")
	}
	kind, ok := field.Tag.Lookup("kind")
	if !ok {
		panic("Couldn't find %s owner kind tag")
	}
	return group, kind
}
func (ref KnownResourceReference) Copy() KnownResourceReference {
	return ref
}