func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValue {
	ref := keyToProto(defaultAppID, k)
	pe := make([]*pb.PropertyValue_ReferenceValue_PathElement, len(ref.Path.Element))
	for i, e := range ref.Path.Element {
		pe[i] = &pb.PropertyValue_ReferenceValue_PathElement{
			Type: e.Type,
			Id:   e.Id,
			Name: e.Name,
		}
	}
	return &pb.PropertyValue_ReferenceValue{
		App:         ref.App,
		NameSpace:   ref.NameSpace,
		Pathelement: pe,
	}
}
func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValue {
	ref := keyToProto(defaultAppID, k)
	pe := make([]*pb.PropertyValue_ReferenceValue_PathElement, len(ref.Path.Element))
	for i, e := range ref.Path.Element {
		pe[i] = &pb.PropertyValue_ReferenceValue_PathElement{
			Type: e.Type,
			Id:   e.Id,
			Name: e.Name,
		}
	}
	return &pb.PropertyValue_ReferenceValue{
		App:         ref.App,
		NameSpace:   ref.NameSpace,
		Pathelement: pe,
	}
}
func keyToReferenceValue ( defaultAppID string , k * Key ) * pb . PropertyValue_ReferenceValue { ref := keyToProto ( defaultAppID , k ) pe := make ( [ ] * pb . PropertyValue_ReferenceValue_PathElement , len ( ref . Path . Element ) ) for i , e := range ref . Path . Element { pe [ i ] = & pb . PropertyValue_ReferenceValue_PathElement { Type : e . Type , Id : e . Id , Name : e . Name , } } return & pb . PropertyValue_ReferenceValue { App : ref . App , NameSpace : ref . NameSpace , Pathelement : pe , } }
// keyToReferenceValue is the same as keyToProto except the output is a
// PropertyValue_ReferenceValue instead of a Reference.
keyToReferenceValue is the same as keyToProto except the output is a PropertyValue_ReferenceValue instead of a Reference .