// The package g is a go/doc test for mixed exported/unexported ...
PACKAGE g

IMPORTPATH
	testdata/g

FILENAMES
	testdata/g.go

CONSTANTS
	// 
	const (
		A, _	= iota, iota
		_, D
		E, _
		G, H
	)


VARIABLES
	// 
	var (
		_, C2, _	= 1, 2, 3
		C4, _, C6	= 4, 5, 6
		_, C8, _	= 7, 8, 9
	)

	// 
	var (
		_, X = f()
	)

