// run -gcflags=-G=3

// 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 main

type Iterator[T any] interface {
	Iterate()
}

type IteratorFunc[T any] func(fn func(T) bool)

func (f IteratorFunc[T]) Iterate() {
}

func FromIterator[T any](it Iterator[T]) {
	it.Iterate()
}

func Foo[T, R any]() {
	FromIterator[R](IteratorFunc[R](nil))
}

func main() {
	Foo[int, int]()
}
