Points-to sets of all variables
[]:<ComplexTaint: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<ComplexTaint: void main(java.lang.String[])>/0},type=java.lang.String[] in <ComplexTaint: void main(java.lang.String[])>}]
[]:<ComplexTaint: void main(java.lang.String[])>/s1 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/s2 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/s3 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/s4 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<ComplexTaint: void main(java.lang.String[])>/s5 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[12@L12] temp$3 = invokestatic SourceSink.source()/result,type=java.lang.String}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/s6 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[12@L12] temp$3 = invokestatic SourceSink.source()/result,type=java.lang.String}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$0 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$1 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$2 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$3 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[12@L12] temp$3 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$4 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<ComplexTaint: void main(java.lang.String[])>/temp$5 -> [[]:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<SourceSink: java.lang.String source()>/temp$0 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<SourceSink: void sink(java.lang.String)>/s -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[12@L12] temp$3 = invokestatic SourceSink.source()/result,type=java.lang.String}, []:TaintObj{alloc=<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result,type=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{<ComplexTaint: void main(java.lang.String[])>/0},type=java.lang.String[] in <ComplexTaint: void main(java.lang.String[])>}[*] -> [[]:EntryPointObj{alloc=MethodParam{<ComplexTaint: void main(java.lang.String[])>/0}[*],type=java.lang.String in <ComplexTaint: void main(java.lang.String[])>}]

Detected 3 taint flow(s):
TaintFlow{<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result -> <ComplexTaint: void main(java.lang.String[])>[7@L7] invokestatic SourceSink.sink(s3)/0}
TaintFlow{<ComplexTaint: void main(java.lang.String[])>[3@L4] temp$1 = invokestatic SourceSink.source()/result -> <ComplexTaint: void main(java.lang.String[])>[15@L14] invokestatic SourceSink.sink(s6)/0}
TaintFlow{<ComplexTaint: void main(java.lang.String[])>[12@L12] temp$3 = invokestatic SourceSink.source()/result -> <ComplexTaint: void main(java.lang.String[])>[15@L14] invokestatic SourceSink.sink(s6)/0}

