You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: makeResIds.go
    path of file: ./repos/kubeedge/vendor/sigs.k8s.io/kustomize/api/internal/utils
    
    the code of the file until where you have to start completion: // Copyright 2022 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0

package utils

import (
	"fmt"
	"strings"

	"sigs.k8s.io/kustomize/kyaml/resid"
	"sigs.k8s.io/kustomize/kyaml/yaml"
)

// MakeResIds returns all of an RNode's current and previous Ids
func MakeResIds(n *yaml.RNode) ([]resid.ResId, error) {
	var result []resid.ResId
	apiVersion := n.Field(yaml.APIVersionField)
	var group, version string
	if apiVersion != nil {
		group, version = resid.ParseGroupVersion(yaml.GetValue(apiVersion.Value))
	}
	result = append(result, resid.NewResIdWithNamespace(
		resid.Gvk{Group: group, Version: version, Kind: n.GetKind()}, n.GetName(), n.GetNamespace()),
	)
	prevIds, err := PrevIds(n)
	if err != nil {
		
    
func PrevIds(n *yaml.RNode) ([]resid.ResId, error) {
	var ids []resid.ResId
	// TODO: merge previous names and namespaces into one list of
	//     pairs on one annotation so there is no chance of error
	annotations := n.GetAnnotations(
		BuildAnnotationPreviousNames,
		BuildAnnotationPreviousNamespaces,
		BuildAnnotationPreviousKinds)
	if _, ok := annotations[BuildAnnotationPreviousNames]; !ok {
		return nil, nil
	}
	names := strings.Split(annotations[BuildAnnotationPreviousNames], ",")
	ns := strings.Split(annotations[BuildAnnotationPreviousNamespaces], ",")
	kinds := strings.Split(annotations[BuildAnnotationPreviousKinds], ",")
	// This should never happen
	if len(names) != len(ns) || len(names) != len(kinds) {
		return nil, fmt.Errorf(
			"number of previous names, " +
				"number of previous namespaces, " +
				"number of previous kinds not equal")
	}
	apiVersion := n.GetApiVersion()
	group, version := resid.ParseGroupVersion(apiVersion)
	ids = make([]resid.ResId, 0, len(names))
	for i := range names {
		gvk := resid.Gvk{
			Group:   group,
			Version: version,
			Kind:    kinds[i],
		}
		ids = append(ids, resid.NewResIdWithNamespace(
			gvk, names[i], ns[i]))
	}
	return ids, nil
}