Points-to sets of all variables
[]:<A: void <init>()>/%this -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}, []:NewObj{<NativeModel: void compareAndSwapObject()>[15@L44] new A}]
[]:<NativeModel$1Anonymous0: A run()>/%this -> [[]:NewObj{<NativeModel: void doPrivileged()>[0@L28] new NativeModel$1Anonymous0}]
[]:<NativeModel$1Anonymous0: A run()>/temp$0 -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}]
[]:<NativeModel$1Anonymous0: java.lang.Object run()>/%this -> [[]:NewObj{<NativeModel: void doPrivileged()>[0@L28] new NativeModel$1Anonymous0}]
[]:<NativeModel$1Anonymous0: java.lang.Object run()>/temp$0 -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}]
[]:<NativeModel$1Anonymous0: void <init>()>/%this -> [[]:NewObj{<NativeModel: void doPrivileged()>[0@L28] new NativeModel$1Anonymous0}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-dest1 -> [[]:NewObj{<NativeModel: void arraycopy()>[6@L16] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-dest4 -> [[]:NewObj{<NativeModel: void arraycopy()>[16@L22] newarray java.lang.String[%intconst0]}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-src0 -> [[]:NewObj{<NativeModel: void arraycopy()>[1@L14] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-src3 -> [[]:NewObj{<NativeModel: void arraycopy()>[11@L20] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-temp2 -> [[]:NewObj{<NativeModel: void arraycopy()>[2@L15] new java.lang.Object}]
[]:<NativeModel: void arraycopy()>/%native-arraycopy-temp5 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<NativeModel: void arraycopy()>/dest1 -> [[]:NewObj{<NativeModel: void arraycopy()>[6@L16] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/dest2 -> [[]:NewObj{<NativeModel: void arraycopy()>[16@L22] newarray java.lang.String[%intconst0]}]
[]:<NativeModel: void arraycopy()>/o -> [[]:NewObj{<NativeModel: void arraycopy()>[2@L15] new java.lang.Object}]
[]:<NativeModel: void arraycopy()>/s -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<NativeModel: void arraycopy()>/src1 -> [[]:NewObj{<NativeModel: void arraycopy()>[1@L14] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/src2 -> [[]:NewObj{<NativeModel: void arraycopy()>[11@L20] newarray java.lang.Object[%intconst0]}]
[]:<NativeModel: void arraycopy()>/temp$10 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<NativeModel: void arraycopy()>/temp$2 -> [[]:NewObj{<NativeModel: void arraycopy()>[2@L15] new java.lang.Object}]
[]:<NativeModel: void arraycopy()>/temp$7 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<NativeModel: void compareAndSwapObject()>/%stringconst3 -> [[]:ConstantObj{java.lang.String: "x"}]
[]:<NativeModel: void compareAndSwapObject()>/a -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[15@L44] new A}]
[]:<NativeModel: void compareAndSwapObject()>/aobj -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[18@L45] new java.lang.Object}]
[]:<NativeModel: void compareAndSwapObject()>/arr -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[4@L39] newarray java.lang.String[%intconst0]}]
[]:<NativeModel: void compareAndSwapObject()>/astr -> [[]:ConstantObj{java.lang.String: "x"}]
[]:<NativeModel: void compareAndSwapObject()>/expected -> [[]:ConstantObj{java.lang.String: "expected"}]
[]:<NativeModel: void compareAndSwapObject()>/temp$0 -> []
[]:<NativeModel: void compareAndSwapObject()>/temp$1 -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[4@L39] newarray java.lang.String[%intconst0]}]
[]:<NativeModel: void compareAndSwapObject()>/temp$5 -> []
[]:<NativeModel: void compareAndSwapObject()>/temp$6 -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[15@L44] new A}]
[]:<NativeModel: void compareAndSwapObject()>/temp$7 -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[18@L45] new java.lang.Object}]
[]:<NativeModel: void compareAndSwapObject()>/unsafe -> []
[]:<NativeModel: void compareAndSwapObject()>/x -> [[]:ConstantObj{java.lang.String: "expected"}, []:ConstantObj{java.lang.String: "x"}]
[]:<NativeModel: void compareAndSwapObject()>/xo -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[18@L45] new java.lang.Object}]
[]:<NativeModel: void doPrivileged()>/a -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}]
[]:<NativeModel: void doPrivileged()>/temp$0 -> [[]:NewObj{<NativeModel: void doPrivileged()>[0@L28] new NativeModel$1Anonymous0}]
[]:<NativeModel: void doPrivileged()>/temp$1 -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}]
[]:<NativeModel: void doPrivileged()>/temp$2 -> [[]:NewObj{<NativeModel$1Anonymous0: A run()>[0@L29] new A}]
[]:<NativeModel: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<NativeModel: void main(java.lang.String[])>/0},type=java.lang.String[] in <NativeModel: void main(java.lang.String[])>}]

Points-to sets of all static fields
<java.lang.System: java.io.PrintStream out> -> []

Points-to sets of all instance fields
[]:NewObj{<NativeModel: void compareAndSwapObject()>[15@L44] new A}.obj -> [[]:NewObj{<NativeModel: void compareAndSwapObject()>[18@L45] new java.lang.Object}]
[]:NewObj{<NativeModel: void compareAndSwapObject()>[15@L44] new A}.str -> [[]:ConstantObj{java.lang.String: "x"}]

Points-to sets of all array indexes
[]:EntryPointObj{alloc=MethodParam{<NativeModel: void main(java.lang.String[])>/0},type=java.lang.String[] in <NativeModel: void main(java.lang.String[])>}[*] -> [[]:EntryPointObj{alloc=MethodParam{<NativeModel: void main(java.lang.String[])>/0}[*],type=java.lang.String in <NativeModel: void main(java.lang.String[])>}]
[]:NewObj{<NativeModel: void arraycopy()>[11@L20] newarray java.lang.Object[%intconst0]}[*] -> [[]:MergedObj{<Merged java.lang.String>}]
[]:NewObj{<NativeModel: void arraycopy()>[16@L22] newarray java.lang.String[%intconst0]}[*] -> [[]:MergedObj{<Merged java.lang.String>}]
[]:NewObj{<NativeModel: void arraycopy()>[1@L14] newarray java.lang.Object[%intconst0]}[*] -> [[]:NewObj{<NativeModel: void arraycopy()>[2@L15] new java.lang.Object}]
[]:NewObj{<NativeModel: void arraycopy()>[6@L16] newarray java.lang.Object[%intconst0]}[*] -> [[]:NewObj{<NativeModel: void arraycopy()>[2@L15] new java.lang.Object}]
[]:NewObj{<NativeModel: void compareAndSwapObject()>[4@L39] newarray java.lang.String[%intconst0]}[*] -> [[]:ConstantObj{java.lang.String: "expected"}, []:ConstantObj{java.lang.String: "x"}]

