// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package p type Fooer[t any] interface { foo(Barer[t]) } type Barer[t any] interface { bar(Bazer[t]) } type Bazer[t any] interface { Fooer[t] baz(t) } type Int int func (n Int) baz(int) {} func (n Int) foo(b Barer[int]) { b.bar(n) } type F[t any] interface { f(G[t]) } type G[t any] interface { g(H[t]) } type H[t any] interface { F[t] } type T struct{} func (n T) f(b G[T]) { b.g(n) }