CSharp7.cs: # 7| [Class] Literals # 9| 5: [Field] x # 9| -1: [TypeMention] int # 9| 1: [AssignExpr] ... = ... # 9| 0: [FieldAccess] access to field x # 9| 1: [IntLiteral] 11 # 10| 6: [Field] y # 10| -1: [TypeMention] int # 10| 1: [AssignExpr] ... = ... # 10| 0: [FieldAccess] access to field y # 10| 1: [IntLiteral] 123456 # 11| 7: [Field] z # 11| -1: [TypeMention] int # 11| 1: [AssignExpr] ... = ... # 11| 0: [FieldAccess] access to field z # 11| 1: [IntLiteral] 128 # 14| [Class] ExpressionBodiedMembers # 16| 4: [Field] field # 16| -1: [TypeMention] int # 16| 1: [AssignExpr] ... = ... # 16| 0: [FieldAccess] access to field field # 16| 1: [IntLiteral] 0 # 17| 5: [Method] Foo # 17| -1: [TypeMention] int # 17| 4: [FieldAccess] access to field field # 18| 6: [Property] P # 18| -1: [TypeMention] int # 18| 3: [Getter] get_P # 18| 4: [IntLiteral] 5 # 19| 7: [Property] Q # 19| -1: [TypeMention] int # 21| 3: [Getter] get_Q # 21| 4: [MethodCall] call to method Foo # 22| 4: [Setter] set_Q #-----| 2: (Parameters) # 22| 0: [Parameter] value # 22| 4: [AssignExpr] ... = ... # 22| 0: [FieldAccess] access to field field # 22| 1: [ParameterAccess] access to parameter value # 24| 8: [InstanceConstructor] ExpressionBodiedMembers # 24| 3: [ConstructorInitializer] call to constructor ExpressionBodiedMembers # 24| 0: [IntLiteral] 1 # 24| 4: [BlockStmt] {...} # 25| 9: [InstanceConstructor] ExpressionBodiedMembers #-----| 2: (Parameters) # 25| 0: [Parameter] x # 25| -1: [TypeMention] int # 25| 4: [MethodCall] call to method Foo # 26| 10: [Destructor] ~ExpressionBodiedMembers # 26| 4: [MethodCall] call to method Foo # 29| [Class] ThrowExpr # 31| 5: [Method] Throw # 31| -1: [TypeMention] int #-----| 2: (Parameters) # 31| 0: [Parameter] i # 31| -1: [TypeMention] int # 32| 4: [BlockStmt] {...} # 33| 0: [ReturnStmt] return ...; # 33| 0: [ConditionalExpr] ... ? ... : ... # 33| 0: [GTExpr] ... > ... # 33| 0: [ParameterAccess] access to parameter i # 33| 1: [IntLiteral] 0 # 33| 1: [ParameterAccess] access to parameter i # 33| 2: [ThrowExpr] throw ... # 33| 0: [ObjectCreation] object creation of type ArgumentException # 33| -1: [TypeMention] ArgumentException # 33| 0: [StringLiteral] "i" # 37| [Class] OutVariables # 39| 5: [Method] F # 39| -1: [TypeMention] Void #-----| 2: (Parameters) # 39| 0: [Parameter] x # 39| -1: [TypeMention] string # 40| 4: [BlockStmt] {...} # 41| 0: [ExprStmt] ...; # 41| 0: [AssignExpr] ... = ... # 41| 0: [ParameterAccess] access to parameter x # 41| 1: [StringLiteral] "tainted" # 44| 6: [Method] G # 44| -1: [TypeMention] Void #-----| 2: (Parameters) # 44| 0: [Parameter] x # 44| -1: [TypeMention] string # 44| 1: [Parameter] y # 44| -1: [TypeMention] string # 45| 4: [BlockStmt] {...} # 46| 0: [ExprStmt] ...; # 46| 0: [AssignExpr] ... = ... # 46| 0: [ParameterAccess] access to parameter y # 46| 1: [ParameterAccess] access to parameter x # 49| 7: [Method] G # 49| -1: [TypeMention] Void # 50| 4: [BlockStmt] {...} # 51| 0: [ExprStmt] ...; # 51| 0: [MethodCall] call to method F # 51| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t1 # 52| 1: [ExprStmt] ...; # 52| 0: [MethodCall] call to method F # 52| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t2 # 53| 2: [LocalVariableDeclStmt] ... ...; # 53| 0: [LocalVariableDeclAndInitExpr] String t3 = ... # 53| -1: [TypeMention] string # 53| 0: [LocalVariableAccess] access to local variable t3 # 53| 1: [LocalVariableAccess] access to local variable t1 # 54| 3: [ExprStmt] ...; # 54| 0: [MethodCall] call to method F # 54| 0: [LocalVariableAccess] access to local variable t1 # 55| 4: [ExprStmt] ...; # 55| 0: [AssignExpr] ... = ... # 55| 0: [LocalVariableAccess] access to local variable t3 # 55| 1: [LocalVariableAccess] access to local variable t1 # 56| 5: [ExprStmt] ...; # 56| 0: [AssignExpr] ... = ... # 56| 0: [LocalVariableAccess] access to local variable t3 # 56| 1: [LocalVariableAccess] access to local variable t2 # 57| 6: [ExprStmt] ...; # 57| 0: [MethodCall] call to method G # 57| 0: [StringLiteral] "tainted" # 57| 1: [LocalVariableAccess,LocalVariableDeclExpr] String t4 # 58| 7: [LocalVariableDeclStmt] ... ...; # 58| 0: [LocalVariableDeclAndInitExpr] String t5 = ... # 58| -1: [TypeMention] string # 58| 0: [LocalVariableAccess] access to local variable t5 # 58| 1: [LocalVariableAccess] access to local variable t4 # 62| [Class] Tuples # 64| 5: [Method] F # 64| -1: [TypeMention] (int, int) # 64| 1: [TypeMention] int # 64| 2: [TypeMention] int # 65| 4: [BlockStmt] {...} # 66| 0: [ReturnStmt] return ...; # 66| 0: [TupleExpr] (..., ...) # 66| 0: [IntLiteral] 1 # 66| 1: [IntLiteral] 2 # 69| 6: [Method] Expressions # 69| -1: [TypeMention] Void # 70| 4: [BlockStmt] {...} # 71| 0: [ExprStmt] ...; # 71| 0: [AssignExpr] ... = ... # 71| 0: [TupleExpr] (..., ...) # 71| 0: [LocalVariableDeclExpr] Int32 x # 71| 1: [LocalVariableDeclExpr] Int32 y # 71| 1: [MethodCall] call to method F # 72| 1: [LocalVariableDeclStmt] ... ...; # 72| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) z = ... # 72| -1: [TypeMention] (int, int) # 72| 0: [LocalVariableAccess] access to local variable z # 72| 1: [MethodCall] call to method F # 73| 2: [ExprStmt] ...; # 73| 0: [AssignExpr] ... = ... # 73| 0: [TupleExpr] (..., ...) # 73| 0: [LocalVariableAccess] access to local variable x # 73| 1: [LocalVariableAccess] access to local variable y # 73| 1: [MethodCall] call to method F # 74| 3: [ExprStmt] ...; # 74| 0: [AssignExpr] ... = ... # 74| 0: [LocalVariableAccess] access to local variable x # 74| 1: [FieldAccess] access to field Item1 # 74| -1: [MethodCall] call to method F # 75| 4: [ExprStmt] ...; # 75| 0: [AssignExpr] ... = ... # 75| 0: [TupleExpr] (..., ...) # 75| 0: [LocalVariableAccess] access to local variable x # 75| 1: [LocalVariableAccess] access to local variable y # 75| 2: [FieldAccess] access to field Item1 # 75| -1: [LocalVariableAccess] access to local variable z # 75| 1: [TupleExpr] (..., ...) # 75| 0: [IntLiteral] 1 # 75| 1: [IntLiteral] 2 # 75| 2: [IntLiteral] 3 # 76| 5: [ExprStmt] ...; # 76| 0: [AssignExpr] ... = ... # 76| 0: [TupleExpr] (..., ...) # 76| 0: [LocalVariableAccess] access to local variable x # 76| 1: [LocalVariableAccess] access to local variable y # 76| 1: [AssignExpr] ... = ... # 76| 0: [TupleExpr] (..., ...) # 76| 0: [LocalVariableAccess] access to local variable x # 76| 1: [LocalVariableAccess] access to local variable y # 76| 1: [TupleExpr] (..., ...) # 76| 0: [IntLiteral] 1 # 76| 1: [IntLiteral] 2 # 77| 6: [ExprStmt] ...; # 77| 0: [AssignExpr] ... = ... # 77| 0: [TupleExpr] (..., ...) # 77| 0: [LocalVariableDeclExpr] Int32 a # 77| 1: [TupleExpr] (..., ...) # 77| 0: [LocalVariableDeclExpr] Int32 b # 77| 1: [LocalVariableDeclExpr] Int32 c # 77| 1: [TupleExpr] (..., ...) # 77| 0: [IntLiteral] 1 # 77| 1: [LocalVariableAccess] access to local variable z # 78| 7: [ExprStmt] ...; # 78| 0: [AssignExpr] ... = ... # 78| 0: [TupleExpr] (..., ...) # 78| 0: [LocalVariableAccess] access to local variable a # 78| 1: [TupleExpr] (..., ...) # 78| 0: [LocalVariableAccess] access to local variable b # 78| 1: [LocalVariableAccess] access to local variable c # 78| 1: [TupleExpr] (..., ...) # 78| 0: [LocalVariableAccess] access to local variable b # 78| 1: [TupleExpr] (..., ...) # 78| 0: [LocalVariableAccess] access to local variable c # 78| 1: [LocalVariableAccess] access to local variable a # 79| 8: [ExprStmt] ...; # 79| 0: [AssignExpr] ... = ... # 79| 0: [TupleExpr] (..., ...) # 79| 0: [LocalVariableDeclExpr] String i # 79| 1: [LocalVariableDeclExpr] Int32 j # 79| 1: [TupleExpr] (..., ...) # 79| 0: [StringLiteral] "" # 79| 1: [LocalVariableAccess] access to local variable x # 82| 7: [Method] I # 82| -1: [TypeMention] string #-----| 2: (Parameters) # 82| 0: [Parameter] x # 82| -1: [TypeMention] string # 83| 4: [BlockStmt] {...} # 84| 0: [ReturnStmt] return ...; # 84| 0: [FieldAccess] access to field Item1 # 84| -1: [TupleExpr] (..., ...) # 84| 0: [ParameterAccess] access to parameter x # 84| 1: [IntLiteral] 2 # 87| 8: [Method] TaintFlow # 87| -1: [TypeMention] Void # 88| 4: [BlockStmt] {...} # 89| 0: [LocalVariableDeclStmt] ... ...; # 89| 0: [LocalVariableDeclAndInitExpr] (String,String) t1 = ... # 89| -1: [TypeMention] (string, string) # 89| 0: [LocalVariableAccess] access to local variable t1 # 89| 1: [TupleExpr] (..., ...) # 89| 0: [StringLiteral] "tainted" # 89| 1: [StringLiteral] "X2" # 90| 1: [ExprStmt] ...; # 90| 0: [AssignExpr] ... = ... # 90| 0: [TupleExpr] (..., ...) # 90| 0: [LocalVariableDeclExpr] String t2 # 90| 1: [LocalVariableDeclExpr] String t3 # 90| 1: [LocalVariableAccess] access to local variable t1 # 91| 2: [LocalVariableDeclStmt] ... ...; # 91| 0: [LocalVariableDeclAndInitExpr] String t4 = ... # 91| -1: [TypeMention] string # 91| 0: [LocalVariableAccess] access to local variable t4 # 91| 1: [LocalVariableAccess] access to local variable t3 # 92| 3: [LocalVariableDeclStmt] ... ...; # 92| 0: [LocalVariableDeclAndInitExpr] String t5 = ... # 92| -1: [TypeMention] string # 92| 0: [LocalVariableAccess] access to local variable t5 # 92| 1: [MethodCall] call to method I # 92| 0: [FieldAccess] access to field Item1 # 92| -1: [LocalVariableAccess] access to local variable t1 # 95| 9: [Method] TupleExprNode # 95| -1: [TypeMention] Void # 96| 4: [BlockStmt] {...} # 97| 0: [LocalVariableDeclStmt] ... ...; # 97| 0: [LocalVariableDeclAndInitExpr] (Int32,String) m1 = ... # 97| -1: [TypeMention] (int, string) # 97| 0: [LocalVariableAccess] access to local variable m1 # 97| 1: [TupleExpr] (..., ...) # 97| 0: [IntLiteral] 1 # 97| 1: [StringLiteral] "TupleExprNode1" # 98| 1: [LocalVariableDeclStmt] ... ...; # 98| 0: [LocalVariableDeclAndInitExpr] (Int32,(String,Int32)) m2 = ... # 98| -1: [TypeMention] (int, (string, int)) # 98| 0: [LocalVariableAccess] access to local variable m2 # 98| 1: [TupleExpr] (..., ...) # 98| 0: [IntLiteral] 1 # 98| 1: [TupleExpr] (..., ...) # 98| 0: [StringLiteral] "TupleExprNode2" # 98| 1: [IntLiteral] 2 # 101| 10: [Method] TupleMemberAccess # 101| -1: [TypeMention] Void # 102| 4: [BlockStmt] {...} # 103| 0: [LocalVariableDeclStmt] ... ...; # 103| 0: [LocalVariableDeclAndInitExpr] String m1 = ... # 103| -1: [TypeMention] string # 103| 0: [LocalVariableAccess] access to local variable m1 # 103| 1: [FieldAccess] access to field Item1 # 103| -1: [TupleExpr] (..., ...) # 103| 0: [StringLiteral] "TupleMemberAccess1" # 103| 1: [IntLiteral] 0 # 104| 1: [LocalVariableDeclStmt] ... ...; # 104| 0: [LocalVariableDeclAndInitExpr] (String,Int32) m2 = ... # 104| -1: [TypeMention] (string, int) # 104| 0: [LocalVariableAccess] access to local variable m2 # 104| 1: [FieldAccess] access to field Item2 # 104| -1: [TupleExpr] (..., ...) # 104| 0: [IntLiteral] 0 # 104| 1: [TupleExpr] (..., ...) # 104| 0: [StringLiteral] "TupleMemberAccess2" # 104| 1: [IntLiteral] 1 # 107| 11: [Method] DefUse # 107| -1: [TypeMention] Void # 108| 4: [BlockStmt] {...} # 109| 0: [ExprStmt] ...; # 109| 0: [AssignExpr] ... = ... # 109| 0: [TupleExpr] (..., ...) # 109| 0: [LocalVariableDeclExpr] String m1 # 109| 1: [LocalVariableDeclExpr] (Int32,Int32) m2 # 109| 1: [TupleExpr] (..., ...) # 109| 0: [StringLiteral] "DefUse1" # 109| 1: [TupleExpr] (..., ...) # 109| 0: [IntLiteral] 0 # 109| 1: [IntLiteral] 1 # 110| 1: [LocalVariableDeclStmt] ... ...; # 110| 0: [LocalVariableDeclExpr] String m3 # 110| 0: [TypeMention] string # 111| 2: [LocalVariableDeclStmt] ... ...; # 111| 0: [LocalVariableDeclExpr] Int32 m4 # 111| 0: [TypeMention] int # 111| 1: [LocalVariableDeclExpr] Int32 m5 # 111| 0: [TypeMention] int # 112| 3: [ExprStmt] ...; # 112| 0: [AssignExpr] ... = ... # 112| 0: [TupleExpr] (..., ...) # 112| 0: [LocalVariableAccess] access to local variable m3 # 112| 1: [TupleExpr] (..., ...) # 112| 0: [LocalVariableAccess] access to local variable m4 # 112| 1: [LocalVariableAccess] access to local variable m5 # 112| 1: [TupleExpr] (..., ...) # 112| 0: [LocalVariableAccess] access to local variable m1 # 112| 1: [LocalVariableAccess] access to local variable m2 # 113| 4: [LocalVariableDeclStmt] ... ...; # 113| 0: [LocalVariableDeclAndInitExpr] Int32 m6 = ... # 113| -1: [TypeMention] int # 113| 0: [LocalVariableAccess] access to local variable m6 # 113| 1: [LocalVariableAccess] access to local variable m4 # 114| 5: [ExprStmt] ...; # 114| 0: [AssignExpr] ... = ... # 114| 0: [TupleExpr] (..., ...) # 114| 0: [LocalVariableDeclExpr] String m7 # 114| 1: [TupleExpr] (..., ...) # 114| 0: [LocalVariableDeclExpr] Int32 m8 # 114| 1: [LocalVariableDeclExpr] Int32 m9 # 114| 1: [AssignExpr] ... = ... # 114| 0: [TupleExpr] (..., ...) # 114| 0: [LocalVariableAccess] access to local variable m1 # 114| 1: [LocalVariableAccess] access to local variable m2 # 114| 1: [TupleExpr] (..., ...) # 114| 0: [StringLiteral] "DefUse2" # 114| 1: [TupleExpr] (..., ...) # 114| 0: [IntLiteral] 0 # 114| 1: [IntLiteral] 1 # 115| 6: [LocalVariableDeclStmt] ... ...; # 115| 0: [LocalVariableDeclAndInitExpr] Int32 m10 = ... # 115| -1: [TypeMention] int # 115| 0: [LocalVariableAccess] access to local variable m10 # 115| 1: [LocalVariableAccess] access to local variable m9 # 118| 7: [ExprStmt] ...; # 118| 0: [AssignExpr] ... = ... # 118| 0: [FieldAccess] access to field Item2 # 118| -1: [LocalVariableAccess] access to local variable m2 # 118| 1: [IntLiteral] 0 # 119| 8: [LocalVariableDeclStmt] ... ...; # 119| 0: [LocalVariableDeclAndInitExpr] Int32 m11 = ... # 119| -1: [TypeMention] int # 119| 0: [LocalVariableAccess] access to local variable m11 # 119| 1: [FieldAccess] access to field Item1 # 119| -1: [LocalVariableAccess] access to local variable m2 # 122| 9: [LocalVariableDeclStmt] ... ...; # 122| 0: [LocalVariableDeclExpr] String m12 # 122| 0: [TypeMention] string # 123| 10: [LocalVariableDeclStmt] ... ...; # 123| 0: [LocalVariableDeclAndInitExpr] String m13 = ... # 123| -1: [TypeMention] string # 123| 0: [LocalVariableAccess] access to local variable m13 # 123| 1: [AssignExpr] ... = ... # 123| 0: [LocalVariableAccess] access to local variable m12 # 123| 1: [StringLiteral] "DefUse3" # 127| [Class] LocalFunctions # 129| 5: [Method] Main # 129| -1: [TypeMention] int # 130| 4: [BlockStmt] {...} # 131| 0: [LocalFunctionStmt] f1(...) # 131| 0: [LocalFunction] f1 #-----| 2: (Parameters) # 131| 0: [Parameter] x # 131| -1: [TypeMention] int # 131| 4: [BlockStmt] {...} # 131| 0: [ReturnStmt] return ...; # 131| 0: [AddExpr] ... + ... # 131| 0: [ParameterAccess] access to parameter x # 131| 1: [IntLiteral] 1 # 133| 1: [LocalFunctionStmt] f2(...) # 133| 0: [LocalFunction] f2 #-----| 1: (Type parameters) # 133| 0: [TypeParameter] T # 133| 1: [TypeParameter] U #-----| 2: (Parameters) # 133| 0: [Parameter] t # 133| -1: [TypeMention] T # 133| 1: [Parameter] u # 133| -1: [TypeMention] U # 133| 4: [BlockStmt] {...} # 133| 0: [ReturnStmt] return ...; # 133| 0: [ParameterAccess] access to parameter t # 135| 2: [LocalVariableDeclStmt] ... ...; # 135| 0: [LocalVariableDeclAndInitExpr] Func f4 = ... # 135| -1: [TypeMention] Func # 135| 1: [TypeMention] int # 135| 0: [LocalVariableAccess] access to local variable f4 # 135| 1: [ImplicitDelegateCreation] delegate creation of type Func # 135| 0: [LocalFunctionAccess] access to local function f3 # 137| 3: [LocalFunctionStmt] f3(...) # 137| 0: [LocalFunction] f3 # 137| 4: [IntLiteral] 2 # 139| 4: [LocalVariableDeclStmt] ... ...; # 139| 0: [LocalVariableDeclAndInitExpr] Func f5 = ... # 139| -1: [TypeMention] Func # 139| 1: [TypeMention] int # 139| 2: [TypeMention] int # 139| 0: [LocalVariableAccess] access to local variable f5 # 139| 1: [LambdaExpr] (...) => ... #-----| 2: (Parameters) # 139| 0: [Parameter] x # 139| 4: [AddExpr] ... + ... # 139| 0: [ParameterAccess] access to parameter x # 139| 1: [IntLiteral] 1 # 141| 5: [LocalFunctionStmt] f6(...) # 141| 0: [LocalFunction] f6 #-----| 2: (Parameters) # 141| 0: [Parameter] x # 141| -1: [TypeMention] int # 141| 4: [ConditionalExpr] ... ? ... : ... # 141| 0: [GTExpr] ... > ... # 141| 0: [ParameterAccess] access to parameter x # 141| 1: [IntLiteral] 0 # 141| 1: [AddExpr] ... + ... # 141| 0: [IntLiteral] 1 # 141| 1: [LocalFunctionCall] call to local function f7 # 141| -1: [LocalFunctionAccess] access to local function f7 # 141| 0: [SubExpr] ... - ... # 141| 0: [ParameterAccess] access to parameter x # 141| 1: [IntLiteral] 1 # 141| 2: [IntLiteral] 0 # 143| 6: [LocalFunctionStmt] f7(...) # 143| 0: [LocalFunction] f7 #-----| 2: (Parameters) # 143| 0: [Parameter] x # 143| -1: [TypeMention] int # 143| 4: [LocalFunctionCall] call to local function f6 # 143| -1: [LocalFunctionAccess] access to local function f6 # 143| 0: [ParameterAccess] access to parameter x # 145| 7: [LocalFunctionStmt] f8(...) # 145| 0: [LocalFunction] f8 # 146| 4: [BlockStmt] {...} # 147| 0: [LocalFunctionStmt] f9(...) # 147| 0: [LocalFunction] f9 #-----| 2: (Parameters) # 147| 0: [Parameter] x # 147| -1: [TypeMention] int # 147| 4: [LocalFunctionCall] call to local function f7 # 147| -1: [LocalFunctionAccess] access to local function f7 # 147| 0: [ParameterAccess] access to parameter x # 148| 1: [ReturnStmt] return ...; # 148| 0: [LocalFunctionCall] call to local function f9 # 148| -1: [LocalFunctionAccess] access to local function f9 # 148| 0: [IntLiteral] 1 # 151| 8: [LocalVariableDeclStmt] ... ...; # 151| 0: [LocalVariableDeclAndInitExpr] Action a = ... # 151| -1: [TypeMention] Action # 151| 0: [LocalVariableAccess] access to local variable a # 151| 1: [LambdaExpr] (...) => ... # 152| 4: [BlockStmt] {...} # 153| 0: [LocalFunctionStmt] f9(...) # 153| 0: [LocalFunction] f9 # 153| 4: [IntLiteral] 0 # 156| 9: [ReturnStmt] return ...; # 156| 0: [LocalFunctionCall] call to local function f1 # 156| -1: [LocalFunctionAccess] access to local function f1 # 156| 0: [IntLiteral] 2 # 159| 6: [Method] Generics # 159| -1: [TypeMention] Void # 160| 4: [BlockStmt] {...} # 161| 0: [LocalFunctionStmt] f(...) # 161| 0: [LocalFunction] f #-----| 1: (Type parameters) # 161| 0: [TypeParameter] T # 161| 4: [IntLiteral] 1 # 162| 1: [LocalFunctionStmt] g(...) # 162| 0: [LocalFunction] g #-----| 1: (Type parameters) # 162| 0: [TypeParameter] T #-----| 2: (Parameters) # 162| 0: [Parameter] t # 162| -1: [TypeMention] T # 162| 4: [ParameterAccess] access to parameter t # 164| 2: [LocalFunctionStmt] h(...) # 164| 0: [LocalFunction] h #-----| 1: (Type parameters) # 164| 0: [TypeParameter] T # 164| 1: [TypeParameter] U #-----| 2: (Parameters) # 164| 0: [Parameter] t # 164| -1: [TypeMention] T # 164| 1: [Parameter] u # 164| -1: [TypeMention] U # 165| 4: [BlockStmt] {...} # 166| 0: [LocalFunctionStmt] f2(...) # 166| 0: [LocalFunction] f2 #-----| 1: (Type parameters) # 166| 0: [TypeParameter] S #-----| 2: (Parameters) # 166| 0: [Parameter] s # 166| -1: [TypeMention] S # 166| 1: [Parameter] _t # 166| -1: [TypeMention] T # 166| 4: [LocalFunctionCall] call to local function f # 166| -1: [LocalFunctionAccess] access to local function f # 167| 1: [ExprStmt] ...; # 167| 0: [LocalFunctionCall] call to local function f # 167| -1: [LocalFunctionAccess] access to local function f # 168| 2: [ReturnStmt] return ...; # 168| 0: [LocalFunctionCall] call to local function g # 168| -1: [LocalFunctionAccess] access to local function g # 168| 0: [ParameterAccess] access to parameter u # 171| 3: [ExprStmt] ...; # 171| 0: [LocalFunctionCall] call to local function h # 171| -1: [LocalFunctionAccess] access to local function h # 171| 0: [IntLiteral] 0 # 171| 1: [IntLiteral] 0 # 172| 4: [ExprStmt] ...; # 172| 0: [LocalFunctionCall] call to local function h # 172| -1: [LocalFunctionAccess] access to local function h # 172| 0: [StringLiteral] "" # 172| 1: [BoolLiteral] true # 175| 7: [Method] GlobalFlow # 175| -1: [TypeMention] Void # 176| 4: [BlockStmt] {...} # 177| 0: [LocalVariableDeclStmt] ... ...; # 177| 0: [LocalVariableDeclAndInitExpr] String src = ... # 177| -1: [TypeMention] string # 177| 0: [LocalVariableAccess] access to local variable src # 177| 1: [StringLiteral] "tainted" # 178| 1: [LocalFunctionStmt] f(...) # 178| 0: [LocalFunction] f #-----| 2: (Parameters) # 178| 0: [Parameter] s # 178| -1: [TypeMention] string # 178| 4: [AddExpr] ... + ... # 178| 0: [LocalFunctionCall] call to local function g # 178| -1: [LocalFunctionAccess] access to local function g # 178| 0: [ParameterAccess] access to parameter s # 178| 1: [StringLiteral] "" # 179| 2: [LocalFunctionStmt] g(...) # 179| 0: [LocalFunction] g #-----| 2: (Parameters) # 179| 0: [Parameter] s # 179| -1: [TypeMention] string # 179| 4: [ParameterAccess] access to parameter s # 180| 3: [LocalFunctionStmt] h(...) # 180| 0: [LocalFunction] h #-----| 2: (Parameters) # 180| 0: [Parameter] s # 180| -1: [TypeMention] string # 180| 4: [BlockStmt] {...} # 180| 0: [ReturnStmt] return ...; # 180| 0: [ParameterAccess] access to parameter s # 182| 4: [LocalVariableDeclStmt] ... ...; # 182| 0: [LocalVariableDeclAndInitExpr] String sink1 = ... # 182| -1: [TypeMention] string # 182| 0: [LocalVariableAccess] access to local variable sink1 # 182| 1: [LocalFunctionCall] call to local function f # 182| -1: [LocalFunctionAccess] access to local function f # 182| 0: [LocalVariableAccess] access to local variable src # 183| 5: [LocalVariableDeclStmt] ... ...; # 183| 0: [LocalVariableDeclAndInitExpr] String sink2 = ... # 183| -1: [TypeMention] string # 183| 0: [LocalVariableAccess] access to local variable sink2 # 183| 1: [LocalFunctionCall] call to local function g # 183| -1: [LocalFunctionAccess] access to local function g # 183| 0: [LocalVariableAccess] access to local variable src # 184| 6: [LocalVariableDeclStmt] ... ...; # 184| 0: [LocalVariableDeclAndInitExpr] String sink3 = ... # 184| -1: [TypeMention] string # 184| 0: [LocalVariableAccess] access to local variable sink3 # 184| 1: [LocalFunctionCall] call to local function h # 184| -1: [LocalFunctionAccess] access to local function h # 184| 0: [LocalVariableAccess] access to local variable src # 188| [Class] Refs # 190| 5: [Method] F1 # 190| -1: [TypeMention] Void # 191| 4: [BlockStmt] {...} # 192| 0: [LocalVariableDeclStmt] ... ...; # 192| 0: [LocalVariableDeclAndInitExpr] Int32 v1 = ... # 192| -1: [TypeMention] int # 192| 0: [LocalVariableAccess] access to local variable v1 # 192| 1: [IntLiteral] 2 # 193| 1: [LocalVariableDeclStmt] ... ...; # 193| 0: [LocalVariableDeclAndInitExpr] Int32 r1 = ... # 193| -1: [TypeMention] null # 193| 0: [LocalVariableAccess] access to local variable r1 # 193| 1: [RefExpr] ref ... # 193| 0: [LocalVariableAccess] access to local variable v1 # 194| 2: [LocalVariableDeclStmt] ... ...; # 194| 0: [LocalVariableDeclAndInitExpr] Int32[] array = ... # 194| -1: [TypeMention] Int32[] # 194| 0: [LocalVariableAccess] access to local variable array # 194| 1: [ArrayCreation] array creation of type Int32[] # 194| -1: [TypeMention] Int32[] # 194| 1: [TypeMention] int # 194| 0: [IntLiteral] 10 # 195| 3: [ExprStmt] ...; # 195| 0: [AssignExpr] ... = ... # 195| 0: [LocalVariableAccess] access to local variable r1 # 195| 1: [IntLiteral] 3 # 196| 4: [ExprStmt] ...; # 196| 0: [AssignExpr] ... = ... # 196| 0: [LocalVariableAccess] access to local variable r1 # 196| 1: [ArrayAccess] access to array element # 196| -1: [LocalVariableAccess] access to local variable array # 196| 0: [IntLiteral] 1 # 197| 5: [LocalVariableDeclStmt] ... ...; # 197| 0: [LocalVariableDeclAndInitExpr] Int32 r2 = ... # 197| -1: [TypeMention] null # 197| 0: [LocalVariableAccess] access to local variable r2 # 197| 1: [RefExpr] ref ... # 197| 0: [ArrayAccess] access to array element # 197| -1: [LocalVariableAccess] access to local variable array # 197| 0: [IntLiteral] 3 # 198| 6: [LocalVariableDeclStmt] ... ...; # 198| 0: [LocalVariableDeclAndInitExpr] Int32 r3 = ... # 198| -1: [TypeMention] null # 198| 0: [LocalVariableAccess] access to local variable r3 # 198| 1: [RefExpr] ref ... # 198| 0: [LocalVariableAccess] access to local variable r1 # 199| 7: [ExprStmt] ...; # 199| 0: [AssignExpr] ... = ... # 199| 0: [LocalVariableAccess] access to local variable v1 # 199| 1: [MethodCall] call to method F2 # 199| 0: [LocalVariableAccess] access to local variable v1 # 200| 8: [LocalVariableDeclStmt] ... ...; # 200| 0: [LocalVariableDeclAndInitExpr] Int32 r4 = ... # 200| -1: [TypeMention] null # 200| 0: [LocalVariableAccess] access to local variable r4 # 200| 1: [RefExpr] ref ... # 200| 0: [MethodCall] call to method F2 # 200| 0: [LocalVariableAccess] access to local variable r1 # 201| 9: [ExprStmt] ...; # 201| 0: [AssignExpr] ... = ... # 201| 0: [MethodCall] call to method F2 # 201| 0: [LocalVariableAccess] access to local variable r1 # 201| 1: [IntLiteral] 3 # 204| 6: [Method] F2 # 204| -1: [TypeMention] int #-----| 2: (Parameters) # 204| 0: [Parameter] p # 204| -1: [TypeMention] int # 205| 4: [BlockStmt] {...} # 206| 0: [LocalFunctionStmt] F3(...) # 206| 0: [LocalFunction] F3 #-----| 2: (Parameters) # 206| 0: [Parameter] q # 206| -1: [TypeMention] int # 206| 4: [BlockStmt] {...} # 206| 0: [ReturnStmt] return ...; # 206| 0: [RefExpr] ref ... # 206| 0: [ParameterAccess] access to parameter q # 207| 1: [ReturnStmt] return ...; # 207| 0: [RefExpr] ref ... # 207| 0: [ParameterAccess] access to parameter p # 210| 7: [DelegateType] RefFn #-----| 2: (Parameters) # 210| 0: [Parameter] p # 210| -1: [TypeMention] int # 213| [Class] Discards # 215| 5: [Method] f # 215| -1: [TypeMention] (int, double) # 215| 1: [TypeMention] int # 215| 2: [TypeMention] double #-----| 2: (Parameters) # 215| 0: [Parameter] x # 215| -1: [TypeMention] bool # 216| 4: [BlockStmt] {...} # 217| 0: [ExprStmt] ...; # 217| 0: [AssignExpr] ... = ... # 217| 0: [ParameterAccess] access to parameter x # 217| 1: [BoolLiteral] false # 218| 1: [ReturnStmt] return ...; # 218| 0: [TupleExpr] (..., ...) # 218| 0: [IntLiteral] 0 # 218| 1: [DoubleLiteral] 0 # 221| 6: [Method] Test # 221| -1: [TypeMention] Void # 222| 4: [BlockStmt] {...} # 223| 0: [ExprStmt] ...; # 223| 0: [AssignExpr] ... = ... # 223| 0: [DiscardExpr] _ # 223| 1: [MethodCall] call to method f # 223| 0: [DiscardExpr] _ # 224| 1: [ExprStmt] ...; # 224| 0: [AssignExpr] ... = ... # 224| 0: [TupleExpr] (..., ...) # 224| 0: [DiscardExpr] _ # 224| 1: [DiscardExpr] _ # 224| 1: [MethodCall] call to method f # 224| 0: [DiscardExpr] _ # 225| 2: [ExprStmt] ...; # 225| 0: [AssignExpr] ... = ... # 225| 0: [TupleExpr] (..., ...) # 225| 0: [LocalVariableDeclExpr] Int32 x # 225| 1: [DiscardExpr] _ # 225| 1: [MethodCall] call to method f # 225| 0: [DiscardExpr] _ # 226| 3: [ExprStmt] ...; # 226| 0: [AssignExpr] ... = ... # 226| 0: [TupleExpr] (..., ...) # 226| 0: [DiscardExpr] _ # 226| 1: [LocalVariableDeclExpr] Double y # 226| 1: [MethodCall] call to method f # 226| 0: [LocalVariableAccess,LocalVariableDeclExpr] Boolean z # 230| [Class] Patterns # 232| 5: [Method] Test # 232| -1: [TypeMention] Void # 233| 4: [BlockStmt] {...} # 234| 0: [LocalVariableDeclStmt] ... ...; # 234| 0: [LocalVariableDeclAndInitExpr] Object o = ... # 234| -1: [TypeMention] object # 234| 0: [LocalVariableAccess] access to local variable o # 234| 1: [NullLiteral] null # 235| 1: [IfStmt] if (...) ... # 235| 0: [LogicalAndExpr] ... && ... # 235| 0: [IsExpr] ... is ... # 235| 0: [LocalVariableAccess] access to local variable o # 235| 1: [VariablePatternExpr] Int32 i1 # 235| 0: [TypeMention] int # 235| 1: [GTExpr] ... > ... # 235| 0: [LocalVariableAccess] access to local variable i1 # 235| 1: [IntLiteral] 0 # 236| 1: [BlockStmt] {...} # 237| 0: [ExprStmt] ...; # 237| 0: [MethodCall] call to method WriteLine # 237| -1: [TypeAccess] access to type Console # 237| 0: [TypeMention] Console # 237| 0: [InterpolatedStringExpr] $"..." # 237| 0: [StringLiteral] "int " # 237| 1: [LocalVariableAccess] access to local variable i1 # 239| 2: [IfStmt] if (...) ... # 239| 0: [IsExpr] ... is ... # 239| 0: [LocalVariableAccess] access to local variable o # 239| 1: [VariablePatternExpr] String s1 # 239| 0: [TypeMention] string # 240| 1: [BlockStmt] {...} # 241| 0: [ExprStmt] ...; # 241| 0: [MethodCall] call to method WriteLine # 241| -1: [TypeAccess] access to type Console # 241| 0: [TypeMention] Console # 241| 0: [InterpolatedStringExpr] $"..." # 241| 0: [StringLiteral] "string " # 241| 1: [LocalVariableAccess] access to local variable s1 # 243| 2: [IfStmt] if (...) ... # 243| 0: [IsExpr] ... is ... # 243| 0: [LocalVariableAccess] access to local variable o # 243| 1: [TypeAccessPatternExpr] access to type Double # 243| 0: [TypeMention] double # 244| 1: [BlockStmt] {...} # 246| 2: [IfStmt] if (...) ... # 246| 0: [IsExpr] ... is ... # 246| 0: [LocalVariableAccess] access to local variable o # 246| 1: [VariablePatternExpr] Object v1 # 247| 1: [BlockStmt] {...} # 250| 2: [SwitchStmt] switch (...) {...} # 250| 0: [LocalVariableAccess] access to local variable o # 252| 0: [ConstCase] case ...: # 252| 0: [ConstantPatternExpr,StringLiteral] "xyz" # 253| 1: [BreakStmt] break; # 254| 2: [ConstCase] case ...: # 254| 0: [ConstantPatternExpr,StringLiteral] "" # 254| 1: [LTExpr] ... < ... # 254| 0: [IntLiteral] 1 # 254| 1: [IntLiteral] 2 # 255| 3: [BreakStmt] break; # 256| 4: [ConstCase] case ...: # 256| 0: [ConstantPatternExpr,StringLiteral] "x" # 256| 1: [IsExpr] ... is ... # 256| 0: [LocalVariableAccess] access to local variable o # 256| 1: [VariablePatternExpr] String s4 # 256| 0: [TypeMention] string # 257| 5: [ExprStmt] ...; # 257| 0: [MethodCall] call to method WriteLine # 257| -1: [TypeAccess] access to type Console # 257| 0: [TypeMention] Console # 257| 0: [InterpolatedStringExpr] $"..." # 257| 0: [StringLiteral] "x " # 257| 1: [LocalVariableAccess] access to local variable s4 # 258| 6: [BreakStmt] break; # 259| 7: [CaseStmt] case ...: # 259| 0: [VariablePatternExpr] Int32 i2 # 259| 0: [TypeMention] int # 259| 1: [GTExpr] ... > ... # 259| 0: [LocalVariableAccess] access to local variable i2 # 259| 1: [IntLiteral] 0 # 260| 8: [ExprStmt] ...; # 260| 0: [MethodCall] call to method WriteLine # 260| -1: [TypeAccess] access to type Console # 260| 0: [TypeMention] Console # 260| 0: [InterpolatedStringExpr] $"..." # 260| 0: [StringLiteral] "positive " # 260| 1: [LocalVariableAccess] access to local variable i2 # 261| 9: [BreakStmt] break; # 262| 10: [CaseStmt] case ...: # 262| 0: [VariablePatternExpr] Int32 i3 # 262| 0: [TypeMention] int # 263| 11: [ExprStmt] ...; # 263| 0: [MethodCall] call to method WriteLine # 263| -1: [TypeAccess] access to type Console # 263| 0: [TypeMention] Console # 263| 0: [InterpolatedStringExpr] $"..." # 263| 0: [StringLiteral] "int " # 263| 1: [LocalVariableAccess] access to local variable i3 # 264| 12: [BreakStmt] break; # 265| 13: [CaseStmt] case ...: # 265| 0: [VariablePatternExpr] String s2 # 265| 0: [TypeMention] string # 266| 14: [ExprStmt] ...; # 266| 0: [MethodCall] call to method WriteLine # 266| -1: [TypeAccess] access to type Console # 266| 0: [TypeMention] Console # 266| 0: [InterpolatedStringExpr] $"..." # 266| 0: [StringLiteral] "string " # 266| 1: [LocalVariableAccess] access to local variable s2 # 267| 15: [BreakStmt] break; # 268| 16: [CaseStmt] case ...: # 268| 0: [TypeAccessPatternExpr] access to type Double # 268| 0: [TypeMention] double # 269| 17: [ExprStmt] ...; # 269| 0: [MethodCall] call to method WriteLine # 269| -1: [TypeAccess] access to type Console # 269| 0: [TypeMention] Console # 269| 0: [StringLiteral] "Double" # 270| 18: [BreakStmt] break; # 271| 19: [CaseStmt] case ...: # 271| 0: [VariablePatternExpr] Object v2 # 272| 20: [BreakStmt] break; # 273| 21: [DefaultCase] default: # 274| 22: [ExprStmt] ...; # 274| 0: [MethodCall] call to method WriteLine # 274| -1: [TypeAccess] access to type Console # 274| 0: [TypeMention] Console # 274| 0: [StringLiteral] "Something else" # 275| 23: [BreakStmt] break; # 280| [Class] ForeachStatements # 282| 5: [Method] Test # 282| -1: [TypeMention] Void # 283| 4: [BlockStmt] {...} # 284| 0: [LocalVariableDeclStmt] ... ...; # 284| 0: [LocalVariableDeclAndInitExpr] Dictionary dict = ... # 284| -1: [TypeMention] Dictionary # 284| 0: [LocalVariableAccess] access to local variable dict # 284| 1: [ObjectCreation] object creation of type Dictionary # 284| 0: [TypeMention] Dictionary # 284| 1: [TypeMention] int # 284| 2: [TypeMention] string # 285| 1: [LocalVariableDeclStmt] ... ...; # 285| 0: [LocalVariableDeclAndInitExpr] IEnumerable<(Int32,String)> list = ... # 285| -1: [TypeMention] IEnumerable<(Int32,String)> # 285| 0: [LocalVariableAccess] access to local variable list # 285| 1: [MethodCall] call to method Select # 285| -1: [LocalVariableAccess] access to local variable dict # 285| 0: [LambdaExpr] (...) => ... #-----| 2: (Parameters) # 285| 0: [Parameter] item # 285| 4: [TupleExpr] (..., ...) # 285| 0: [PropertyCall] access to property Key # 285| -1: [ParameterAccess] access to parameter item # 285| 1: [PropertyCall] access to property Value # 285| -1: [ParameterAccess] access to parameter item # 287| 2: [ForeachStmt] foreach (... ... in ...) ... # 287| 0: [TupleExpr] (..., ...) # 287| 0: [LocalVariableDeclExpr] Int32 a # 287| 1: [LocalVariableDeclExpr] String b # 287| 1: [LocalVariableAccess] access to local variable list # 287| 2: [BlockStmt] {...} # 289| 3: [ForeachStmt] foreach (... ... in ...) ... # 289| 0: [TupleExpr] (..., ...) # 289| 0: [LocalVariableDeclExpr] Int32 a # 289| 1: [LocalVariableDeclExpr] String b # 289| 1: [LocalVariableAccess] access to local variable list # 289| 2: [BlockStmt] {...} # 291| 4: [ForeachStmt] foreach (... ... in ...) ... # 291| 0: [TupleExpr] (..., ...) # 291| 0: [LocalVariableDeclExpr] Int32 a # 291| 1: [LocalVariableDeclExpr] String b # 291| 1: [LocalVariableAccess] access to local variable list # 291| 2: [BlockStmt] {...} # 295| [Class] ForLoops # 297| 5: [Method] Test # 297| -1: [TypeMention] Void # 298| 4: [BlockStmt] {...} # 299| 0: [ForStmt] for (...;...;...) ... # 299| -1: [LocalVariableDeclAndInitExpr] Int32 x = ... # 299| -1: [TypeMention] int # 299| 0: [LocalVariableAccess] access to local variable x # 299| 1: [IntLiteral] 0 # 299| 0: [LogicalAndExpr] ... && ... # 299| 0: [LTExpr] ... < ... # 299| 0: [LocalVariableAccess] access to local variable x # 299| 1: [IntLiteral] 10 # 299| 1: [IsExpr] ... is ... # 299| 0: [LocalVariableAccess] access to local variable x # 299| 1: [VariablePatternExpr] Int32 y # 299| 0: [TypeMention] int # 299| 1: [PreIncrExpr] ++... # 299| 0: [LocalVariableAccess] access to local variable x # 300| 2: [BlockStmt] {...} # 301| 0: [ExprStmt] ...; # 301| 0: [MethodCall] call to method WriteLine # 301| -1: [TypeAccess] access to type Console # 301| 0: [TypeMention] Console # 301| 0: [LocalVariableAccess] access to local variable y