-------- @pointsto pointsto-A-x --------
this *int may point to these objects:
	a
	b

-------- @callstack callstack-A --------
Found a call path from root to main.A
main.A
dynamic function call from main.apply
static function call from main.main

-------- @pointsto pointsto-B-x --------
this *int may point to these objects:
	a
	b

-------- @callers callers-B --------
main.B is called from these 1 sites:
	dynamic function call from main.apply

-------- @callees callees-apply --------
this dynamic function call dispatches to:
	main.A
	main.B

-------- @callers callers-apply --------
main.apply is called from these 2 sites:
	static function call from main.main
	static function call from main.main

-------- @callers callers-store --------
main.store is called from these 2 sites:
	static function call from main.main
	static function call from main.main

-------- @pointsto pointsto-result-f --------
this func() *int may point to these objects:
	main.main$1

-------- @callees callees-main.call-f --------
this dynamic function call dispatches to:
	main.main$1

-------- @callers callers-main.call --------
main.call is called from these 2 sites:
	static function call from main.main
	static function call from main.main

-------- @callees callees-main-apply1 --------
this static function call dispatches to:
	main.apply

-------- @pointsto pointsto-pc --------
this *int may point to these objects:
	c

-------- @pointsto pointsto-pd --------
this *int may point to these objects:
	d

-------- @callees callees-err-no-call --------

Error: there is no function call here
-------- @callees callees-err-builtin --------

Error: this is a call to the built-in 'print' operator
-------- @callees callees-err-conversion --------

Error: this is a type conversion, not a function call
-------- @callees callees-err-bad-selection --------

Error: ambiguous selection within function call (or conversion)
-------- @callees callees-err-deadcode1 --------
this static function call dispatches to:
	main.main

-------- @callees callees-err-nil-func --------
dynamic function call on nil value

-------- @callees callees-err-nil-interface --------
dynamic method call on nil value

-------- @callees callees-not-a-wrapper --------
this dynamic method call dispatches to:
	(main.myint).f

-------- @callers callers-not-a-wrapper --------
(main.myint).f is called from these 1 sites:
	dynamic method call from main.main

-------- @callees callees-err-deadcode2 --------
this static function call dispatches to:
	main.main

-------- @callstack callstack-err-deadcode --------
main.deadcode is unreachable in this analysis scope

-------- @callees callees-err-deadcode3 --------

Error: this call site is unreachable in this analysis
-------- @callers callers-global --------
main.init is called from these 1 sites:
the root of the call graph

-------- @callstack callstack-init --------
Found a call path from root to main.init#1
main.init#1
static function call from main.init

