// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 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	Iputs	interface
{
	puts	func(s string);
}

// ---------

type	Print	struct
{
	whoami	int;
	put	Iputs;
}

func (p *Print)
dop()
{
	print " print ", p.whoami;
	p.put.puts("abc");
}

// ---------

type	Bio	struct
{
	whoami	int;
	put	Iputs;
}

func (b *Bio)
puts(s string)
{
	print " bio ", b.whoami;
	b.put.puts(s);
}

// ---------

type	File	struct
{
	whoami	int;
	put	Iputs;
}

func (f *File)
puts(s string)
{
	print " file ", f.whoami, " -- ", s;
}

func
main()
{
	p := new(Print);
	b := new(Bio);
	f := new(File);

	p.whoami = 1;
	p.put = b;

	b.whoami = 2;
	b.put = f;

	f.whoami = 3;

	p.dop();
	print "\n";
}
