-------- @describe ref-pkg-import --------
import of package "lib"
	const Const  untyped int = 3
	func  Func   func()
	type  Outer  struct{...}
	type  Sorter interface{...}
		method (Sorter) Len() int
		method (Sorter) Less(i int, j int) bool
		method (Sorter) Swap(i int, j int)
	type  Type   int
		method (Type) Method(x *int) *int
	var   Var    int

-------- @describe ref-pkg-import2 --------
import of package "lib/sublib"
	const C untyped int = 0

-------- @describe ref-const --------
reference to const lib.Const untyped int of value 3
defined here

-------- @describe ref-func --------
reference to func lib.Func()
defined here

-------- @describe ref-var --------
reference to var lib.Var int
defined here

-------- @describe ref-type --------
reference to type lib.Type (size 8, align 8)
defined as int
Methods:
	method (Type) Method(x *int) *int

-------- @describe ref-method --------
reference to method func (lib.Type).Method(x *int) *int
defined here

-------- @describe ref-pkg --------
reference to package "lib"
	const Const  untyped int = 3
	func  Func   func()
	type  Outer  struct{...}
	type  Sorter interface{...}
		method (Sorter) Len() int
		method (Sorter) Less(i int, j int) bool
		method (Sorter) Swap(i int, j int)
	type  Type   int
		method (Type) Method(x *int) *int
	var   Var    int

