-------- @pointsto const --------

Error: pointer analysis wants an expression of reference type; got untyped float
-------- @pointsto func-ref-main --------
this func() may point to these objects:
	pointsto.main

-------- @pointsto func-ref-*C.f --------
this func() may point to these objects:
	(*pointsto.C).f

-------- @pointsto func-ref-D.f --------
this func() may point to these objects:
	(pointsto.D).f

-------- @pointsto func-ref-I.f --------

Error: func (pointsto.I).f() is an interface method
-------- @pointsto func-ref-d.f --------
this func() may point to these objects:
	(pointsto.D).f

-------- @pointsto func-ref-i.f --------

Error: func (pointsto.I).f() is an interface method
-------- @pointsto ref-lexical-d.f --------
this func() may point to these objects:
	(pointsto.D).f

-------- @pointsto ref-anon --------
this func() may point to these objects:
	pointsto.main$1

-------- @pointsto ref-global --------
this *string may point to these objects:
	new

-------- @pointsto var-def-x-1 --------
this *int may point to these objects:
	a

-------- @pointsto var-ref-x-1 --------
this *int may point to these objects:
	a

-------- @pointsto var-def-x-2 --------
this *int may point to these objects:
	b

-------- @pointsto var-ref-x-2 --------
this *int may point to these objects:
	b

-------- @pointsto var-ref-i-C --------
this I may contain these dynamic types:
	*C, may point to:
		new

-------- @pointsto var-ref-i-D --------
this I may contain these dynamic types:
	D

-------- @pointsto var-ref-i --------
this I may contain these dynamic types:
	*C, may point to:
		new
	D

-------- @pointsto map-lookup,ok --------

Error: pointer analysis wants an expression of reference type; got (*int, bool)
-------- @pointsto mapval --------
this *int may point to these objects:
	a

-------- @pointsto m --------
this map[string]*int may point to these objects:
	makemap

-------- @pointsto builtin-panic --------

Error: pointer analysis wants an expression of reference type; got ()
-------- @pointsto var-ref-s-f --------
this interface{} may contain these dynamic types:
	chan bool, may point to:
		makechan

-------- @pointsto func-live --------

Error: pointer analysis did not find expression (dead code?)
-------- @pointsto func-dead --------

Error: pointer analysis did not find expression (dead code?)
-------- @pointsto b --------

Error: pointer analysis did not find expression (dead code?)
