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: meta_set_test.go
    path of file: ./repos/terraform/internal/plugin/discovery
    
    the code of the file until where you have to start completion: // Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1

package discovery

import (
	"fmt"
	"strings"
	"testing"
)

func TestPluginMetaSetManipulation(t *testing.T) {
	metas := []PluginMeta{
		{
			Name:    "foo",
			Version: "1.0.0",
			Path:    "test-foo",
		},
		{
			Name:    "bar",
			Version: "2.0.0",
			Path:    "test-bar",
		},
		{
			Name:    "baz",
			Version: "2.0.0",
			Path:    "test-bar",
		},
	}
	s := make(PluginMetaSet)

	if count := s.Count(); count != 0 {
		t.Fatalf("set has Count %d before any items added", count)
	}

	// Can we add metas?
	for _, p := range metas {
		s.Add(p)
		if !s.Has(p) {
			t.Fatalf("%q not in set after adding it", p.Name)
		}
	}

	if got, want := s.Count(), len(metas); got != want {
		t.Fatalf("set has Count %d after all items added; want %d", got, want)
	}

	// Can we still retrieve earlier ones after we added later ones?
	for _, p := range metas {
		if !s.Has(p) {
			
    
func TestPluginMetaSetOverridePaths(t *testing.T) {

	metas := []PluginMeta{
		{
			Name:    "foo",
			Version: "1.0.0",
			Path:    "test-foo-1",
		},
		{
			Name:    "foo",
			Version: "2.0.0",
			Path:    "test-foo-2",
		},
		{
			Name:    "foo",
			Version: "3.0.0",
			Path:    "test-foo-3",
		},
		{
			Name:    "bar",
			Version: "0.0.5",
			Path:    "test-bar-5",
		},
		{
			Name:    "bar",
			Version: "0.0.6",
			Path:    "test-bar-6",
		},
		{
			Name:    "baz",
			Version: "0.0.1",
			Path:    "test-bar",
		},
	}
	s := make(PluginMetaSet)

	for _, p := range metas {
		s.Add(p)
	}

	ns := s.OverridePaths(map[string]string{
		"foo": "override-foo",
		"fun": "override-fun",
	})

	if got, want := ns.Count(), 5; got != want {
		t.Errorf("got %d metas; want %d", got, want)
	}

	if !ns.Has(metas[3]) {
		t.Errorf("new set is missing %#v", metas[3])
	}
	if !ns.Has(metas[4]) {
		t.Errorf("new set is missing %#v", metas[4])
	}
	if !ns.Has(metas[5]) {
		t.Errorf("new set is missing %#v", metas[5])
	}
	if !ns.Has(PluginMeta{
		Name:    "foo",
		Version: VersionZero,
		Path:    "override-foo",
	}) {
		t.Errorf("new set is missing 'foo' override")
	}
	if !ns.Has(PluginMeta{
		Name:    "fun",
		Version: VersionZero,
		Path:    "override-fun",
	}) {
		t.Errorf("new set is missing 'fun' override")
	}
}