Test of 'implementation' query on generic types.

-- go.mod --
module example.com
go 1.18

-- implementation/implementation.go --
package implementation

type GenIface[T any] interface { //@loc(GenIface, "GenIface"),implementation("GenIface", GC)
	F(int, string, T) //@loc(GenIfaceF, "F"),implementation("F", GCF)
}

type GenConc[U any] int //@loc(GenConc, "GenConc"),implementation("GenConc", GI)

func (GenConc[V]) F(int, string, V) {} //@loc(GenConcF, "F"),implementation("F", GIF)

type GenConcString struct{ GenConc[string] } //@loc(GenConcString, "GenConcString"),implementation(GenConcString, GIString)

-- other/other.go --
package other

type GI[T any] interface { //@loc(GI, "GI"),implementation("GI", GenConc)
	F(int, string, T) //@loc(GIF, "F"),implementation("F", GenConcF)
}

type GIString GI[string] //@loc(GIString, "GIString"),implementation("GIString", GenConcString)

type GC[U any] int //@loc(GC, "GC"),implementation("GC", GenIface)

func (GC[V]) F(int, string, V) {} //@loc(GCF, "F"),implementation("F", GenIfaceF)
