// Illustrating flow-insensitive pointer analysis vs flow sensitive null analysis
class C {
    public static void main(String[] args) { 
	C a = foo(null); 

	// here, a is believed to possibly point to the object that b points to
	a.s.toString();

	C b = new C();
	foo(b);
    }

    String s;
    C() { 
	s = new String("Hi");
    }
    static C foo(C o) {
	return o;
    }
}