Points-to sets of all variables
[]:<A: void <init>()>/%this -> [[]:NewObj{<Cast: void m()>[0@L7] new A}]
[]:<B: void <init>()>/%this -> [[]:NewObj{<Cast: void m()>[3@L8] new B}, []:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<C: void <init>()>/%this -> [[]:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<Cast: void m()>/a -> [[]:NewObj{<Cast: void m()>[0@L7] new A}]
[]:<Cast: void m()>/b -> [[]:NewObj{<Cast: void m()>[3@L8] new B}, []:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<Cast: void m()>/c -> [[]:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<Cast: void m()>/o -> [[]:NewObj{<Cast: void m()>[0@L7] new A}, []:NewObj{<Cast: void m()>[3@L8] new B}, []:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<Cast: void m()>/temp$0 -> [[]:NewObj{<Cast: void m()>[0@L7] new A}]
[]:<Cast: void m()>/temp$1 -> [[]:NewObj{<Cast: void m()>[3@L8] new B}]
[]:<Cast: void m()>/temp$2 -> [[]:NewObj{<Cast: void m()>[6@L9] new C}]
[]:<Cast: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<Cast: void main(java.lang.String[])>/0},type=java.lang.String[] in <Cast: void main(java.lang.String[])>}]

Points-to sets of all static fields

Points-to sets of all instance fields

Points-to sets of all array indexes
[]:EntryPointObj{alloc=MethodParam{<Cast: void main(java.lang.String[])>/0},type=java.lang.String[] in <Cast: void main(java.lang.String[])>}[*] -> [[]:EntryPointObj{alloc=MethodParam{<Cast: void main(java.lang.String[])>/0}[*],type=java.lang.String in <Cast: void main(java.lang.String[])>}]

