Points-to sets of all variables
[]:<A: void <init>()>/%this -> [[]:NewObj{<Assign: void main(java.lang.String[])>[0@L4] new A}, []:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<Assign: void main(java.lang.String[])>/a1 -> [[]:NewObj{<Assign: void main(java.lang.String[])>[0@L4] new A}, []:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<Assign: void main(java.lang.String[])>/a2 -> [[]:NewObj{<Assign: void main(java.lang.String[])>[0@L4] new A}, []:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<Assign: void main(java.lang.String[])>/a3 -> [[]:NewObj{<Assign: void main(java.lang.String[])>[0@L4] new A}, []:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<Assign: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<Assign: void main(java.lang.String[])>/0},type=java.lang.String[] in <Assign: void main(java.lang.String[])>}]
[]:<Assign: void main(java.lang.String[])>/b -> [[]:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<Assign: void main(java.lang.String[])>/temp$0 -> [[]:NewObj{<Assign: void main(java.lang.String[])>[0@L4] new A}]
[]:<Assign: void main(java.lang.String[])>/temp$1 -> [[]:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]
[]:<B: void <init>()>/%this -> [[]:NewObj{<Assign: void main(java.lang.String[])>[5@L7] new B}]

Points-to sets of all static fields

Points-to sets of all instance fields

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

