Points-to sets of all variables
[A, List]:<List$ListIterator: java.lang.Object next()>/%this -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[A, List]:<List$ListIterator: java.lang.Object next()>/temp$0 -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[A, List]:<List$ListIterator: java.lang.Object next()>/temp$1 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[A, List]:<List$ListIterator: void <init>(List)>/%this -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[A, List]:<List$ListIterator: void <init>(List)>/temp$0 -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[B, List]:<List$ListIterator: java.lang.Object next()>/%this -> [[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[B, List]:<List$ListIterator: java.lang.Object next()>/temp$0 -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[B, List]:<List$ListIterator: java.lang.Object next()>/temp$1 -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]
[B, List]:<List$ListIterator: void <init>(List)>/%this -> [[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[B, List]:<List$ListIterator: void <init>(List)>/temp$0 -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType, A]:<List: Iterator iterator()>/%this -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[TwoType, A]:<List: Iterator iterator()>/temp$0 -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType, A]:<List: void <init>()>/%this -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[TwoType, A]:<List: void add(java.lang.Object)>/%this -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[TwoType, A]:<List: void add(java.lang.Object)>/e -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType, B]:<List: Iterator iterator()>/%this -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType, B]:<List: Iterator iterator()>/temp$0 -> [[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType, B]:<List: void <init>()>/%this -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType, B]:<List: void add(java.lang.Object)>/%this -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType, B]:<List: void add(java.lang.Object)>/e -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]
[TwoType]:<A: void <init>()>/%this -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[0@L7] new A}]
[TwoType]:<A: void a()>/%this -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[0@L7] new A}]
[TwoType]:<A: void a()>/i1 -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<A: void a()>/i2 -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<A: void a()>/l1 -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}]
[TwoType]:<A: void a()>/l2 -> [[TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[TwoType]:<A: void a()>/o1 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:<A: void a()>/o2 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:<A: void a()>/temp$0 -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}]
[TwoType]:<A: void a()>/temp$1 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}]
[TwoType]:<A: void a()>/temp$2 -> [[TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[TwoType]:<A: void a()>/temp$3 -> [[TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:<A: void a()>/temp$4 -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<A: void a()>/temp$5 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:<A: void a()>/temp$6 -> [[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<A: void a()>/temp$7 -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:<B: void <init>()>/%this -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[3@L8] new B}]
[TwoType]:<B: void b()>/%this -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[3@L8] new B}]
[TwoType]:<B: void b()>/i3 -> [[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<B: void b()>/l3 -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType]:<B: void b()>/o3 -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]
[TwoType]:<B: void b()>/temp$0 -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType]:<B: void b()>/temp$1 -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]
[TwoType]:<B: void b()>/temp$2 -> [[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}]
[TwoType]:<B: void b()>/temp$3 -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]
[]:<TwoType: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<TwoType: void main(java.lang.String[])>/0},type=java.lang.String[] in <TwoType: void main(java.lang.String[])>}]
[]:<TwoType: void main(java.lang.String[])>/temp$0 -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[0@L7] new A}]
[]:<TwoType: void main(java.lang.String[])>/temp$1 -> [[]:NewObj{<TwoType: void main(java.lang.String[])>[3@L8] new B}]

Points-to sets of all static fields

Points-to sets of all instance fields
[A]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}.this$0 -> [[TwoType]:NewObj{<A: void a()>[0@L14] new List}, [TwoType]:NewObj{<A: void a()>[6@L16] new List}]
[B]:NewObj{<List: Iterator iterator()>[0@L44] new List$ListIterator}.this$0 -> [[TwoType]:NewObj{<B: void b()>[0@L28] new List}]
[TwoType]:NewObj{<A: void a()>[0@L14] new List}.element -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:NewObj{<A: void a()>[6@L16] new List}.element -> [[TwoType]:NewObj{<A: void a()>[3@L15] new java.lang.Object}, [TwoType]:NewObj{<A: void a()>[9@L17] new java.lang.Object}]
[TwoType]:NewObj{<B: void b()>[0@L28] new List}.element -> [[TwoType]:NewObj{<B: void b()>[3@L29] new java.lang.Object}]

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

