// Copyright 2013 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

import "unsafe"

var (
	_ A = A(nil).a().b().c().d().e().f()
	_ A = A(nil).b().c().d().e().f()
	_ A = A(nil).c().d().e().f()
	_ A = A(nil).d().e().f()
	_ A = A(nil).e().f()
	_ A = A(nil).f()
	_ A = A(nil)
)

type (
	A interface {
		a() B
		B
	}

	B interface {
		b() C
		C
	}

	C interface {
		c() D
		D
	}

	D interface {
		d() E
		E
	}

	E interface {
		e() F
		F
	}

	F interface {
		f() A
	}
)

type (
	U /* ERROR cycle */ interface {
		V
	}

	V interface {
		v() [unsafe.Sizeof(u)]int
	}
)

var u U
