-------- @describe pkgdecl --------
definition of package "describe"
	type  C      int
		method (*C) f()
	type  D      struct{...}
		method (D) f()
	type  I      interface{f()}
		method (I) f()
	const c      untyped int = 0
	type  cake   float64
	var   global *string
	func  main   func()
	func  newD   func() D
	const pi     untyped float = 3.141
	const pie    cake = 3.141

-------- @describe badimport1 --------
import of package "nosuchpkg"

-------- @describe badimport2 --------
reference to package "nosuchpkg"

-------- @describe type-ref-builtin --------
reference to built-in type float64

-------- @describe const-ref-iota --------
reference to const iota untyped int of value 0

-------- @describe const-def-pi --------
definition of const pi untyped float of value 3.141

-------- @describe const-def-pie --------
definition of const pie cake of value 3.141
Named types:
	type cake defined here

-------- @describe const-ref-pi --------
reference to const pi untyped float of value 3.141
defined here

-------- @describe func-def-main --------
definition of func main()

-------- @describe func-ref-main --------
reference to func main()
defined here

-------- @describe func-ref-*C.f --------
reference to method func (*C).f()
defined here

-------- @describe func-ref-D.f --------
reference to method func (D).f()
defined here

-------- @describe func-ref-I.f --------
reference to interface method func (I).f()
defined here

-------- @describe type-D --------
reference to type D (size 32, align 8)
defined as struct{Field int; AnotherField string; ThirdField C}
Methods:
	method (D) f()
Fields:
	Field        int
	AnotherField string
	ThirdField   C

-------- @describe type-I --------
reference to type I (size 16, align 8)
defined as interface{f()}
Methods:
	method (I) f()

-------- @describe func-ref-d.f --------
reference to method func (D).f()
defined here

-------- @describe func-ref-i.f --------
reference to interface method func (I).f()
defined here

-------- @describe slice-of-D --------
definition of var slice []D
Named types:
	type D defined here

-------- @describe ptr-with-nonptr-methods --------
definition of var dptr *D
Methods:
	method (*D) f()
Fields:
	Field        int
	AnotherField string
	ThirdField   C
Named types:
	type D defined here

-------- @describe ref-lexical-d --------
reference to var d D
defined here
Methods:
	method (D) f()
Fields:
	Field        int
	AnotherField string
	ThirdField   C
Named types:
	type D defined here

-------- @describe ref-anon --------
reference to var anon func()
defined here

-------- @describe ref-global --------
reference to var global *string
defined here

-------- @describe var-def-x-1 --------
definition of var x *int

-------- @describe var-ref-x-1 --------
reference to var x *int
defined here

-------- @describe var-def-x-2 --------
reference to var x *int
defined here

-------- @describe var-ref-x-2 --------
reference to var x *int
defined here

-------- @describe var-ref-i-C --------
reference to var i I
defined here
Methods:
	method (I) f()
Named types:
	type I defined here

-------- @describe var-ref-i-D --------
reference to var i I
defined here
Methods:
	method (I) f()
Named types:
	type I defined here

-------- @describe var-ref-i --------
reference to var i I
defined here
Methods:
	method (I) f()
Named types:
	type I defined here

-------- @describe const-local-pi --------
definition of const localpi untyped float of value 3.141

-------- @describe const-local-pie --------
definition of const localpie cake of value 3.141
Named types:
	type cake defined here

-------- @describe const-ref-localpi --------
reference to const localpi untyped float of value 3.141
defined here

-------- @describe type-def-T --------
definition of type T (size 8, align 8)
No methods.

-------- @describe type-ref-T --------
reference to type T (size 8, align 8)
defined as int
No methods.

-------- @describe const-expr --------
binary * operation of value 6

-------- @describe const-expr2 --------
binary - operation of value -2

-------- @describe map-lookup,ok --------
index expression of type (*int, bool)

-------- @describe mapval --------
reference to var mapval *int
defined here

-------- @describe m --------
reference to var m map[string]*int
defined here

-------- @describe defer-stmt --------
defer statement

-------- @describe go-stmt --------
go statement

-------- @describe builtin-ref-panic --------
function call (or conversion) of type ()

-------- @describe var-decl-stmt --------
definition of var a2 int

-------- @describe var-decl-stmt2 --------
definition of var _ int

-------- @describe var-def-blank --------
definition of var _ int

-------- @describe lib-outer --------
reference to type lib.Outer (size 56, align 8)
defined as struct{A int; b int; lib.inner}
No methods.
Fields:
	A                 int
	inner.C           bool
	inner.recursive.E bool

-------- @describe var-map-of-C-D --------
definition of var mmm map[C]D
Named types:
	type C defined here
	type D defined here

-------- @describe field-access --------
reference to field ThirdField C
defined here
Methods:
	method (*C) f()
Named types:
	type C defined here

-------- @describe call-unknown --------
function call of type invalid type

-------- @describe def-iface-I --------
definition of type I (size 16, align 8)
Methods:
	method (I) f()

-------- @describe def-imethod-I.f --------
definition of interface method func (I).f()

