// compile

// 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 Src1[T any] func() Src1[T]

func (s *Src1[T]) Next() {
	*s = (*s)()
}

type Src2[T any] []func() Src2[T]

func (s Src2[T]) Next() {
	_ = s[0]()
}

type Src3[T comparable] map[T]func() Src3[T]

func (s Src3[T]) Next() {
	var a T
	_ = s[a]()
}

type Src4[T any] chan func() T

func (s Src4[T]) Next() {
	_ = (<-s)()
}

type Src5[T any] func() Src5[T]

func (s Src5[T]) Next() {
	var x interface{} = s
	_ = (x.(Src5[T]))()
}

func main() {
	var src1 Src1[int]
	src1.Next()

	var src2 Src2[int]
	src2.Next()

	var src3 Src3[string]
	src3.Next()

	var src4 Src4[int]
	src4.Next()

	var src5 Src5[int]
	src5.Next()
}
