diff --git a/csharp/ql/lib/change-notes/2024-12-20-collection-params.md b/csharp/ql/lib/change-notes/2024-12-20-collection-params.md new file mode 100644 index 000000000000..bb5ea26c6d45 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-12-20-collection-params.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 13: Added QL library support for *collection* like type `params` parameters. diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index 03de29d6d431..6384f4582769 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -8,6 +8,7 @@ import Stmt import Type import exprs.Call private import commons.QualifiedName +private import commons.Collections private import semmle.code.csharp.ExprOrStmtParent private import semmle.code.csharp.metrics.Complexity private import TypeRef @@ -273,7 +274,7 @@ class Method extends Callable, Virtualizable, Attributable, @method { Type getParamsType() { exists(Parameter last | last = this.getParameter(this.getNumberOfParameters() - 1) | last.isParams() and - result = last.getType().(ArrayType).getElementType() + result = last.getType().(ParamsCollectionType).getElementType() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/Variable.qll b/csharp/ql/lib/semmle/code/csharp/Variable.qll index 982b4e4743b6..02018c260a68 100644 --- a/csharp/ql/lib/semmle/code/csharp/Variable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Variable.qll @@ -157,7 +157,7 @@ class Parameter extends LocalScopeVariable, Attributable, TopLevelExprParent, @p predicate isOutOrRef() { this.isOut() or this.isRef() } /** - * Holds if this parameter is a parameter array. For example, `args` + * Holds if this parameter is a parameter collection. For example, `args` * is a parameter array in * * ```csharp diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll b/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll index db38e7cb6ebb..c9fbb1210b7b 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll @@ -2,6 +2,8 @@ import csharp import semmle.code.csharp.frameworks.system.Collections +private import semmle.code.csharp.frameworks.System +private import semmle.code.csharp.frameworks.system.collections.Generic private string modifyMethodName() { result = @@ -67,6 +69,42 @@ class CollectionType extends RefType { } } +/** + * A collection type that can be used as a `params` parameter type. + */ +abstract private class ParamsCollectionTypeImpl extends ValueOrRefType { + /** + * Gets the element type of this collection, for example `int` in `IEnumerable`. + */ + abstract Type getElementType(); +} + +private class AddArrayType extends ParamsCollectionTypeImpl instanceof ArrayType { + override Type getElementType() { result = ArrayType.super.getElementType() } +} + +private class AddCollectionTypes extends ParamsCollectionTypeImpl { + private ConstructedType base; + + AddCollectionTypes() { + exists(UnboundGenericType unboundbase | + base = this.getABaseType*() and unboundbase = base.getUnboundGeneric() + | + unboundbase instanceof SystemCollectionsGenericIEnumerableTInterface or + unboundbase instanceof SystemCollectionsGenericICollectionInterface or + unboundbase instanceof SystemCollectionsGenericIListTInterface or + unboundbase instanceof SystemCollectionsGenericIReadOnlyCollectionTInterface or + unboundbase instanceof SystemCollectionsGenericIReadOnlyListTInterface or + unboundbase instanceof SystemSpanStruct or + unboundbase instanceof SystemReadOnlySpanStruct + ) + } + + override Type getElementType() { result = base.getTypeArgument(0) } +} + +final class ParamsCollectionType = ParamsCollectionTypeImpl; + /** Holds if `t` is a collection type. */ predicate isCollectionType(ValueOrRefType t) { t.getABaseType*() instanceof SystemCollectionsIEnumerableInterface and diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 5b1342bacd55..a66c7f3c5d83 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -774,7 +774,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { /** * Holds if `arg` is a `params` argument of `c`, for parameter `p`, and `arg` will - * be wrapped in an array by the C# compiler. + * be wrapped in an collection by the C# compiler. */ private predicate isParamsArg(Call c, Expr arg, Parameter p) { exists(Callable target, int numArgs | @@ -1645,7 +1645,7 @@ private module ArgumentNodes { } /** - * A data-flow node that represents the implicit array creation in a call to a + * A data-flow node that represents the implicit collection creation in a call to a * callable with a `params` parameter. For example, there is an implicit array * creation `new [] { "a", "b", "c" }` in * @@ -1684,7 +1684,7 @@ private module ArgumentNodes { override Location getLocationImpl() { result = callCfn.getLocation() } - override string toStringImpl() { result = "[implicit array creation] " + callCfn } + override string toStringImpl() { result = "[implicit collection creation] " + callCfn } } private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNodeImpl { diff --git a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll index 1b27871d1ef6..080b7d5c7325 100644 --- a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll @@ -6,6 +6,7 @@ */ import csharp +private import semmle.code.csharp.commons.Collections private import RuntimeCallable /** A call. */ @@ -1137,7 +1138,7 @@ private module Internal { if p.isParams() then ( j >= i and - paramType = p.getType().(ArrayType).getElementType() + paramType = p.getType().(ParamsCollectionType).getElementType() ) else ( i = j and paramType = p.getType() diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll index 6cef58990b05..f54476b9e4fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll @@ -3,6 +3,7 @@ */ import csharp +private import semmle.code.csharp.commons.Collections private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.Text @@ -106,7 +107,9 @@ class StringFormatItemParameter extends Parameter { } private Type getParameterType(Parameter p) { - if p.isParams() then result = p.getType().(ArrayType).getElementType() else result = p.getType() + if p.isParams() + then result = p.getType().(ParamsCollectionType).getElementType() + else result = p.getType() } /** Regex for a valid insert. */ diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll index ac16df764162..56e063b1b5e0 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll @@ -755,3 +755,19 @@ class SystemNotImplementedExceptionClass extends SystemClass { class SystemDateTimeStruct extends SystemStruct { SystemDateTimeStruct() { this.hasName("DateTime") } } + +/** The `System.Span` struct. */ +class SystemSpanStruct extends SystemUnboundGenericStruct { + SystemSpanStruct() { + this.hasName("Span`1") and + this.getNumberOfTypeParameters() = 1 + } +} + +/** The `System.ReadOnlySpan` struct. */ +class SystemReadOnlySpanStruct extends SystemUnboundGenericStruct { + SystemReadOnlySpanStruct() { + this.hasName("ReadOnlySpan`1") and + this.getNumberOfTypeParameters() = 1 + } +} diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Generic.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Generic.qll index da41e09c3643..24c1277af026 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Generic.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Generic.qll @@ -158,3 +158,21 @@ class SystemCollectionsGenericIDictionaryInterface extends SystemCollectionsGene this.getNumberOfTypeParameters() = 2 } } + +/** The ``System.Collections.Generic.IReadOnlyCollection`1`` interface. */ +class SystemCollectionsGenericIReadOnlyCollectionTInterface extends SystemCollectionsGenericUnboundGenericInterface +{ + SystemCollectionsGenericIReadOnlyCollectionTInterface() { + this.hasName("IReadOnlyCollection`1") and + this.getNumberOfTypeParameters() = 1 + } +} + +/** The ``System.Collections.Generic.IReadOnlyList`1`` interface. */ +class SystemCollectionsGenericIReadOnlyListTInterface extends SystemCollectionsGenericUnboundGenericInterface +{ + SystemCollectionsGenericIReadOnlyListTInterface() { + this.hasName("IReadOnlyList`1") and + this.getNumberOfTypeParameters() = 1 + } +} diff --git a/csharp/ql/test/library-tests/arguments/PrintAst.expected b/csharp/ql/test/library-tests/arguments/PrintAst.expected index 9210c6748648..b63b49cc7f5f 100644 --- a/csharp/ql/test/library-tests/arguments/PrintAst.expected +++ b/csharp/ql/test/library-tests/arguments/PrintAst.expected @@ -1,332 +1,321 @@ arguments.cs: -# 3| [Class] ArgumentsTest -# 5| 4: [InstanceConstructor] ArgumentsTest +# 4| [Class] ArgumentsTest +# 6| 4: [InstanceConstructor] ArgumentsTest #-----| 2: (Parameters) -# 5| 0: [Parameter] x -# 5| -1: [TypeMention] int -# 5| 1: [IntLiteral] 0 -# 5| 1: [Parameter] y -# 5| -1: [TypeMention] int -# 5| 1: [IntLiteral] 0 -# 6| 4: [BlockStmt] {...} -# 9| 5: [InstanceConstructor] ArgumentsTest +# 6| 0: [Parameter] x +# 6| -1: [TypeMention] int +# 6| 1: [IntLiteral] 0 +# 6| 1: [Parameter] y +# 6| -1: [TypeMention] int +# 6| 1: [IntLiteral] 0 +# 7| 4: [BlockStmt] {...} +# 10| 5: [InstanceConstructor] ArgumentsTest #-----| 2: (Parameters) -# 9| 0: [Parameter] x -# 9| -1: [TypeMention] int -# 9| 1: [Parameter] y -# 9| -1: [TypeMention] int -# 9| 2: [Parameter] z -# 9| -1: [TypeMention] int -# 10| 4: [BlockStmt] {...} -# 11| 0: [ExprStmt] ...; -# 11| 0: [AssignExpr] ... = ... -# 11| 0: [ParameterAccess] access to parameter y -# 11| 1: [ParameterAccess] access to parameter x -# 14| 6: [Method] f1 -# 14| -1: [TypeMention] Void +# 10| 0: [Parameter] x +# 10| -1: [TypeMention] int +# 10| 1: [Parameter] y +# 10| -1: [TypeMention] int +# 10| 2: [Parameter] z +# 10| -1: [TypeMention] int +# 11| 4: [BlockStmt] {...} +# 12| 0: [ExprStmt] ...; +# 12| 0: [AssignExpr] ... = ... +# 12| 0: [ParameterAccess] access to parameter y +# 12| 1: [ParameterAccess] access to parameter x +# 15| 6: [Method] f1 +# 15| -1: [TypeMention] Void #-----| 2: (Parameters) -# 14| 0: [Parameter] x -# 14| -1: [TypeMention] int -# 14| 1: [IntLiteral] 1 -# 14| 1: [Parameter] y -# 14| -1: [TypeMention] int -# 14| 1: [IntLiteral] 2 -# 15| 4: [BlockStmt] {...} -# 18| 7: [Method] f2 -# 18| -1: [TypeMention] Void +# 15| 0: [Parameter] x +# 15| -1: [TypeMention] int +# 15| 1: [IntLiteral] 1 +# 15| 1: [Parameter] y +# 15| -1: [TypeMention] int +# 15| 1: [IntLiteral] 2 +# 16| 4: [BlockStmt] {...} +# 19| 7: [Method] f2 +# 19| -1: [TypeMention] Void #-----| 2: (Parameters) -# 18| 0: [Parameter] x -# 18| -1: [TypeMention] int -# 18| 1: [Parameter] y -# 18| -1: [TypeMention] int -# 18| 2: [Parameter] z -# 18| -1: [TypeMention] int -# 19| 4: [BlockStmt] {...} -# 20| 0: [ExprStmt] ...; -# 20| 0: [AssignExpr] ... = ... -# 20| 0: [ParameterAccess] access to parameter y -# 20| 1: [ParameterAccess] access to parameter x -# 23| 8: [Method] f -# 23| -1: [TypeMention] Void -# 24| 4: [BlockStmt] {...} -# 25| 0: [LocalVariableDeclStmt] ... ...; -# 25| 0: [LocalVariableDeclAndInitExpr] Int32 x = ... -# 25| -1: [TypeMention] int -# 25| 0: [LocalVariableAccess] access to local variable x -# 25| 1: [IntLiteral] 1 -# 27| 1: [ExprStmt] ...; -# 27| 0: [MethodCall] call to method f1 -# 27| 0: [IntLiteral] 2 -# 28| 2: [ExprStmt] ...; -# 28| 0: [MethodCall] call to method f2 -# 28| 0: [LocalVariableAccess] access to local variable x -# 28| 1: [LocalVariableAccess] access to local variable x -# 28| 2: [LocalVariableAccess] access to local variable x -# 29| 3: [ExprStmt] ...; -# 29| 0: [ObjectCreation] object creation of type ArgumentsTest -# 29| -1: [TypeMention] ArgumentsTest +# 19| 0: [Parameter] x +# 19| -1: [TypeMention] int +# 19| 1: [Parameter] y +# 19| -1: [TypeMention] int +# 19| 2: [Parameter] z +# 19| -1: [TypeMention] int +# 20| 4: [BlockStmt] {...} +# 21| 0: [ExprStmt] ...; +# 21| 0: [AssignExpr] ... = ... +# 21| 0: [ParameterAccess] access to parameter y +# 21| 1: [ParameterAccess] access to parameter x +# 24| 8: [Method] f +# 24| -1: [TypeMention] Void +# 25| 4: [BlockStmt] {...} +# 26| 0: [LocalVariableDeclStmt] ... ...; +# 26| 0: [LocalVariableDeclAndInitExpr] Int32 x = ... +# 26| -1: [TypeMention] int +# 26| 0: [LocalVariableAccess] access to local variable x +# 26| 1: [IntLiteral] 1 +# 28| 1: [ExprStmt] ...; +# 28| 0: [MethodCall] call to method f1 +# 28| 0: [IntLiteral] 2 +# 29| 2: [ExprStmt] ...; +# 29| 0: [MethodCall] call to method f2 # 29| 0: [LocalVariableAccess] access to local variable x # 29| 1: [LocalVariableAccess] access to local variable x # 29| 2: [LocalVariableAccess] access to local variable x -# 30| 4: [ExprStmt] ...; +# 30| 3: [ExprStmt] ...; # 30| 0: [ObjectCreation] object creation of type ArgumentsTest # 30| -1: [TypeMention] ArgumentsTest -# 30| 0: [IntLiteral] 10 -# 30| 1: [IntLiteral] 5 -# 33| 9: [Method] f3 -# 33| -1: [TypeMention] Void +# 30| 0: [LocalVariableAccess] access to local variable x +# 30| 1: [LocalVariableAccess] access to local variable x +# 30| 2: [LocalVariableAccess] access to local variable x +# 31| 4: [ExprStmt] ...; +# 31| 0: [ObjectCreation] object creation of type ArgumentsTest +# 31| -1: [TypeMention] ArgumentsTest +# 31| 0: [IntLiteral] 10 +# 31| 1: [IntLiteral] 5 +# 34| 9: [Method] f3 +# 34| -1: [TypeMention] Void #-----| 2: (Parameters) -# 33| 0: [Parameter] o -# 33| -1: [TypeMention] int -# 33| 1: [Parameter] args -# 33| -1: [TypeMention] Int32[] -# 33| 1: [TypeMention] int -# 34| 4: [BlockStmt] {...} -# 35| 0: [ExprStmt] ...; -# 35| 0: [MethodCall] call to method f3 -# 35| 0: [IntLiteral] 0 -# 35| 1: [IntLiteral] 1 -# 35| 2: [IntLiteral] 2 -# 36| 1: [ExprStmt] ...; +# 34| 0: [Parameter] o +# 34| -1: [TypeMention] int +# 34| 1: [Parameter] args +# 34| -1: [TypeMention] Int32[] +# 34| 1: [TypeMention] int +# 35| 4: [BlockStmt] {...} +# 36| 0: [ExprStmt] ...; # 36| 0: [MethodCall] call to method f3 # 36| 0: [IntLiteral] 0 -# 36| 1: [ArrayCreation] array creation of type Int32[] -# 36| -2: [TypeMention] Int32[] -# 36| 1: [TypeMention] int -# 36| -1: [ArrayInitializer] { ..., ... } -# 36| 0: [IntLiteral] 1 -# 36| 1: [IntLiteral] 2 -# 37| 2: [ExprStmt] ...; +# 36| 1: [IntLiteral] 1 +# 36| 2: [IntLiteral] 2 +# 37| 1: [ExprStmt] ...; # 37| 0: [MethodCall] call to method f3 -# 37| 0: [IntLiteral] 1 -# 37| 1: [IntLiteral] 0 -# 38| 3: [ExprStmt] ...; +# 37| 0: [IntLiteral] 0 +# 37| 1: [ArrayCreation] array creation of type Int32[] +# 37| -2: [TypeMention] Int32[] +# 37| 1: [TypeMention] int +# 37| -1: [ArrayInitializer] { ..., ... } +# 37| 0: [IntLiteral] 1 +# 37| 1: [IntLiteral] 2 +# 38| 2: [ExprStmt] ...; # 38| 0: [MethodCall] call to method f3 -# 38| 0: [IntLiteral] 0 -# 38| 1: [ParameterAccess] access to parameter args -# 39| 4: [ExprStmt] ...; +# 38| 0: [IntLiteral] 1 +# 38| 1: [IntLiteral] 0 +# 39| 3: [ExprStmt] ...; # 39| 0: [MethodCall] call to method f3 -# 39| 0: [ParameterAccess] access to parameter args -# 39| 1: [IntLiteral] 0 -# 40| 5: [ExprStmt] ...; +# 39| 0: [IntLiteral] 0 +# 39| 1: [ParameterAccess] access to parameter args +# 40| 4: [ExprStmt] ...; # 40| 0: [MethodCall] call to method f3 -# 40| 0: [ArrayCreation] array creation of type Int32[] -# 40| -2: [TypeMention] Int32[] -# 40| 1: [TypeMention] int -# 40| -1: [ArrayInitializer] { ..., ... } -# 40| 0: [IntLiteral] 1 -# 40| 1: [IntLiteral] 2 +# 40| 0: [ParameterAccess] access to parameter args # 40| 1: [IntLiteral] 0 -# 41| 6: [LocalVariableDeclStmt] ... ...; -# 41| 0: [LocalVariableDeclAndInitExpr] Int16 s1 = ... -# 41| -1: [TypeMention] short -# 41| 0: [LocalVariableAccess] access to local variable s1 -# 41| 1: [CastExpr] (...) ... -# 41| 1: [IntLiteral] 1 -# 41| 1: [LocalVariableDeclAndInitExpr] Int16 s2 = ... -# 41| -1: [TypeMention] short -# 41| 0: [LocalVariableAccess] access to local variable s2 -# 41| 1: [CastExpr] (...) ... -# 41| 1: [IntLiteral] 2 -# 42| 7: [ExprStmt] ...; -# 42| 0: [MethodCall] call to method f3 -# 42| 0: [IntLiteral] 0 +# 41| 5: [ExprStmt] ...; +# 41| 0: [MethodCall] call to method f3 +# 41| 0: [ArrayCreation] array creation of type Int32[] +# 41| -2: [TypeMention] Int32[] +# 41| 1: [TypeMention] int +# 41| -1: [ArrayInitializer] { ..., ... } +# 41| 0: [IntLiteral] 1 +# 41| 1: [IntLiteral] 2 +# 41| 1: [IntLiteral] 0 +# 42| 6: [LocalVariableDeclStmt] ... ...; +# 42| 0: [LocalVariableDeclAndInitExpr] Int16 s1 = ... +# 42| -1: [TypeMention] short +# 42| 0: [LocalVariableAccess] access to local variable s1 +# 42| 1: [CastExpr] (...) ... +# 42| 1: [IntLiteral] 1 +# 42| 1: [LocalVariableDeclAndInitExpr] Int16 s2 = ... +# 42| -1: [TypeMention] short +# 42| 0: [LocalVariableAccess] access to local variable s2 # 42| 1: [CastExpr] (...) ... -# 42| 1: [LocalVariableAccess] access to local variable s1 -# 42| 2: [CastExpr] (...) ... -# 42| 1: [LocalVariableAccess] access to local variable s2 -# 45| 10: [Method] f4 -# 45| -1: [TypeMention] Void +# 42| 1: [IntLiteral] 2 +# 43| 7: [ExprStmt] ...; +# 43| 0: [MethodCall] call to method f3 +# 43| 0: [IntLiteral] 0 +# 43| 1: [CastExpr] (...) ... +# 43| 1: [LocalVariableAccess] access to local variable s1 +# 43| 2: [CastExpr] (...) ... +# 43| 1: [LocalVariableAccess] access to local variable s2 +# 46| 10: [Method] f4 +# 46| -1: [TypeMention] Void #-----| 2: (Parameters) -# 45| 0: [Parameter] args -# 45| -1: [TypeMention] Object[] -# 45| 1: [TypeMention] object -# 46| 4: [BlockStmt] {...} -# 47| 0: [ExprStmt] ...; -# 47| 0: [MethodCall] call to method f4 -# 47| 0: [ArrayCreation] array creation of type Object[] -# 47| -2: [TypeMention] Object[] -# 47| 1: [TypeMention] object -# 47| -1: [ArrayInitializer] { ..., ... } -# 47| 0: [NullLiteral] null -# 47| 1: [NullLiteral] null -# 50| 11: [Property] Prop -# 50| -1: [TypeMention] int -# 50| 3: [Getter] get_Prop -# 50| 4: [Setter] set_Prop +# 46| 0: [Parameter] args +# 46| -1: [TypeMention] Object[] +# 46| 1: [TypeMention] object +# 47| 4: [BlockStmt] {...} +# 48| 0: [ExprStmt] ...; +# 48| 0: [MethodCall] call to method f4 +# 48| 0: [ArrayCreation] array creation of type Object[] +# 48| -2: [TypeMention] Object[] +# 48| 1: [TypeMention] object +# 48| -1: [ArrayInitializer] { ..., ... } +# 48| 0: [NullLiteral] null +# 48| 1: [NullLiteral] null +# 51| 11: [Property] Prop +# 51| -1: [TypeMention] int +# 51| 3: [Getter] get_Prop +# 51| 4: [Setter] set_Prop #-----| 2: (Parameters) -# 50| 0: [Parameter] value -# 52| 12: [Indexer] Item -# 52| -1: [TypeMention] int +# 51| 0: [Parameter] value +# 53| 12: [Indexer] Item +# 53| -1: [TypeMention] int #-----| 1: (Parameters) -# 52| 0: [Parameter] a -# 52| -1: [TypeMention] int -# 52| 1: [Parameter] b -# 52| -1: [TypeMention] int -# 52| 3: [Getter] get_Item +# 53| 0: [Parameter] a +# 53| -1: [TypeMention] int +# 53| 1: [Parameter] b +# 53| -1: [TypeMention] int +# 53| 3: [Getter] get_Item #-----| 2: (Parameters) -# 52| 0: [Parameter] a -# 52| 1: [Parameter] b -# 52| 4: [AddExpr] ... + ... -# 52| 0: [ParameterAccess] access to parameter a -# 52| 1: [ParameterAccess] access to parameter b -# 52| 4: [Setter] set_Item +# 53| 0: [Parameter] a +# 53| 1: [Parameter] b +# 53| 4: [AddExpr] ... + ... +# 53| 0: [ParameterAccess] access to parameter a +# 53| 1: [ParameterAccess] access to parameter b +# 53| 4: [Setter] set_Item #-----| 2: (Parameters) -# 52| 0: [Parameter] a -# 52| 1: [Parameter] b -# 52| 2: [Parameter] value -# 52| 4: [BlockStmt] {...} -# 54| 13: [Method] f5 -# 54| -1: [TypeMention] Void -# 55| 4: [BlockStmt] {...} -# 56| 0: [ExprStmt] ...; -# 56| 0: [AssignExpr] ... = ... -# 56| 0: [PropertyCall] access to property Prop -# 56| 1: [IntLiteral] 0 -# 57| 1: [ExprStmt] ...; +# 53| 0: [Parameter] a +# 53| 1: [Parameter] b +# 53| 2: [Parameter] value +# 53| 4: [BlockStmt] {...} +# 55| 13: [Method] f5 +# 55| -1: [TypeMention] Void +# 56| 4: [BlockStmt] {...} +# 57| 0: [ExprStmt] ...; # 57| 0: [AssignExpr] ... = ... # 57| 0: [PropertyCall] access to property Prop -# 57| 1: [IndexerCall] access to indexer -# 57| -1: [ThisAccess] this access -# 57| 0: [IntLiteral] 1 -# 57| 1: [IntLiteral] 2 -# 58| 2: [ExprStmt] ...; +# 57| 1: [IntLiteral] 0 +# 58| 1: [ExprStmt] ...; # 58| 0: [AssignExpr] ... = ... -# 58| 0: [TupleExpr] (..., ...) -# 58| 0: [PropertyCall] access to property Prop -# 58| 1: [IndexerCall] access to indexer -# 58| -1: [ThisAccess] this access -# 58| 0: [IntLiteral] 3 -# 58| 1: [IntLiteral] 4 -# 58| 1: [TupleExpr] (..., ...) -# 58| 0: [IntLiteral] 5 -# 58| 1: [IntLiteral] 6 -# 59| 3: [ExprStmt] ...; -# 59| 0: [PostIncrExpr] ...++ -# 59| 0: [PropertyCall] access to property Prop -# 60| 4: [ExprStmt] ...; -# 60| 0: [AssignAddExpr] ... += ... +# 58| 0: [PropertyCall] access to property Prop +# 58| 1: [IndexerCall] access to indexer +# 58| -1: [ThisAccess] this access +# 58| 0: [IntLiteral] 1 +# 58| 1: [IntLiteral] 2 +# 59| 2: [ExprStmt] ...; +# 59| 0: [AssignExpr] ... = ... +# 59| 0: [TupleExpr] (..., ...) +# 59| 0: [PropertyCall] access to property Prop +# 59| 1: [IndexerCall] access to indexer +# 59| -1: [ThisAccess] this access +# 59| 0: [IntLiteral] 3 +# 59| 1: [IntLiteral] 4 +# 59| 1: [TupleExpr] (..., ...) +# 59| 0: [IntLiteral] 5 +# 59| 1: [IntLiteral] 6 +# 60| 3: [ExprStmt] ...; +# 60| 0: [PostIncrExpr] ...++ # 60| 0: [PropertyCall] access to property Prop -# 60| 1: [IntLiteral] 7 -# 61| 5: [ExprStmt] ...; -# 61| 0: [PostIncrExpr] ...++ -# 61| 0: [IndexerCall] access to indexer -# 61| -1: [ThisAccess] this access -# 61| 0: [IntLiteral] 8 -# 61| 1: [IntLiteral] 9 -# 62| 6: [ExprStmt] ...; -# 62| 0: [AssignAddExpr] ... += ... +# 61| 4: [ExprStmt] ...; +# 61| 0: [AssignAddExpr] ... += ... +# 61| 0: [PropertyCall] access to property Prop +# 61| 1: [IntLiteral] 7 +# 62| 5: [ExprStmt] ...; +# 62| 0: [PostIncrExpr] ...++ # 62| 0: [IndexerCall] access to indexer # 62| -1: [ThisAccess] this access -# 62| 0: [IntLiteral] 10 -# 62| 1: [IntLiteral] 11 -# 62| 1: [IntLiteral] 12 -# 63| 7: [LocalVariableDeclStmt] ... ...; -# 63| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) tuple = ... -# 63| -1: [TypeMention] (int, int) -# 63| 0: [LocalVariableAccess] access to local variable tuple -# 63| 1: [TupleExpr] (..., ...) -# 63| 0: [IntLiteral] 13 -# 63| 1: [IntLiteral] 14 -# 64| 8: [ExprStmt] ...; -# 64| 0: [AssignExpr] ... = ... -# 64| 0: [TupleExpr] (..., ...) -# 64| 0: [PropertyCall] access to property Prop -# 64| 1: [IndexerCall] access to indexer -# 64| -1: [ThisAccess] this access -# 64| 0: [IntLiteral] 15 -# 64| 1: [IntLiteral] 16 -# 64| 1: [LocalVariableAccess] access to local variable tuple -# 68| 14: [Method] f6 -# 68| -1: [TypeMention] Void +# 62| 0: [IntLiteral] 8 +# 62| 1: [IntLiteral] 9 +# 63| 6: [ExprStmt] ...; +# 63| 0: [AssignAddExpr] ... += ... +# 63| 0: [IndexerCall] access to indexer +# 63| -1: [ThisAccess] this access +# 63| 0: [IntLiteral] 10 +# 63| 1: [IntLiteral] 11 +# 63| 1: [IntLiteral] 12 +# 64| 7: [LocalVariableDeclStmt] ... ...; +# 64| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) tuple = ... +# 64| -1: [TypeMention] (int, int) +# 64| 0: [LocalVariableAccess] access to local variable tuple +# 64| 1: [TupleExpr] (..., ...) +# 64| 0: [IntLiteral] 13 +# 64| 1: [IntLiteral] 14 +# 65| 8: [ExprStmt] ...; +# 65| 0: [AssignExpr] ... = ... +# 65| 0: [TupleExpr] (..., ...) +# 65| 0: [PropertyCall] access to property Prop +# 65| 1: [IndexerCall] access to indexer +# 65| -1: [ThisAccess] this access +# 65| 0: [IntLiteral] 15 +# 65| 1: [IntLiteral] 16 +# 65| 1: [LocalVariableAccess] access to local variable tuple +# 69| 14: [Method] f6 +# 69| -1: [TypeMention] Void #-----| 0: (Attributes) -# 67| 1: [DefaultAttribute] [My(...)] -# 67| -1: [TypeMention] MyAttribute -# 67| 0: [BoolLiteral] false -# 68| 4: [BlockStmt] {...} -# 71| 15: [Method] f7 -# 71| -1: [TypeMention] Void +# 68| 1: [DefaultAttribute] [My(...)] +# 68| -1: [TypeMention] MyAttribute +# 68| 0: [BoolLiteral] false +# 69| 4: [BlockStmt] {...} +# 72| 15: [Method] f7 +# 72| -1: [TypeMention] Void #-----| 0: (Attributes) -# 70| 1: [DefaultAttribute] [My(...)] -# 70| -1: [TypeMention] MyAttribute -# 70| 0: [BoolLiteral] true -# 70| 1: [StringLiteralUtf16] "" -# 70| 2: [IntLiteral] 0 -# 71| 4: [BlockStmt] {...} -# 73| 17: [Method] f8`1 -# 73| -1: [TypeMention] Void +# 71| 1: [DefaultAttribute] [My(...)] +# 71| -1: [TypeMention] MyAttribute +# 71| 0: [BoolLiteral] true +# 71| 1: [StringLiteralUtf16] "" +# 71| 2: [IntLiteral] 0 +# 72| 4: [BlockStmt] {...} +# 74| 17: [Method] f8`1 +# 74| -1: [TypeMention] Void #-----| 1: (Type parameters) -# 73| 0: [TypeParameter] T +# 74| 0: [TypeParameter] T #-----| 2: (Parameters) -# 73| 0: [Parameter] o -# 73| -1: [TypeMention] int -# 73| 1: [Parameter] args -# 73| -1: [TypeMention] T[] -# 73| 1: [TypeMention] T -# 74| 4: [BlockStmt] {...} -# 75| 0: [ExprStmt] ...; -# 75| 0: [MethodCall] call to method f8`1 -# 75| 0: [IntLiteral] 0 -# 75| 1: [ArrayAccess] access to array element -# 75| -1: [ParameterAccess] access to parameter args -# 75| 0: [IntLiteral] 0 -# 75| 2: [ArrayAccess] access to array element -# 75| -1: [ParameterAccess] access to parameter args -# 75| 0: [IntLiteral] 1 -# 76| 1: [ExprStmt] ...; +# 74| 0: [Parameter] o +# 74| -1: [TypeMention] int +# 74| 1: [Parameter] args +# 74| -1: [TypeMention] T[] +# 74| 1: [TypeMention] T +# 75| 4: [BlockStmt] {...} +# 76| 0: [ExprStmt] ...; # 76| 0: [MethodCall] call to method f8`1 # 76| 0: [IntLiteral] 0 -# 76| 1: [ArrayCreation] array creation of type T[] -# 76| -2: [TypeMention] T[] -# 76| 1: [TypeMention] T -# 76| -1: [ArrayInitializer] { ..., ... } -# 76| 0: [ArrayAccess] access to array element -# 76| -1: [ParameterAccess] access to parameter args -# 76| 0: [IntLiteral] 0 -# 76| 1: [ArrayAccess] access to array element -# 76| -1: [ParameterAccess] access to parameter args -# 76| 0: [IntLiteral] 1 -# 77| 2: [ExprStmt] ...; +# 76| 1: [ArrayAccess] access to array element +# 76| -1: [ParameterAccess] access to parameter args +# 76| 0: [IntLiteral] 0 +# 76| 2: [ArrayAccess] access to array element +# 76| -1: [ParameterAccess] access to parameter args +# 76| 0: [IntLiteral] 1 +# 77| 1: [ExprStmt] ...; # 77| 0: [MethodCall] call to method f8`1 # 77| 0: [IntLiteral] 0 -# 77| 1: [ParameterAccess] access to parameter args -# 78| 3: [ExprStmt] ...; +# 77| 1: [ArrayCreation] array creation of type T[] +# 77| -2: [TypeMention] T[] +# 77| 1: [TypeMention] T +# 77| -1: [ArrayInitializer] { ..., ... } +# 77| 0: [ArrayAccess] access to array element +# 77| -1: [ParameterAccess] access to parameter args +# 77| 0: [IntLiteral] 0 +# 77| 1: [ArrayAccess] access to array element +# 77| -1: [ParameterAccess] access to parameter args +# 77| 0: [IntLiteral] 1 +# 78| 2: [ExprStmt] ...; # 78| 0: [MethodCall] call to method f8`1 -# 78| 0: [ParameterAccess] access to parameter args -# 78| 1: [IntLiteral] 0 -# 80| 4: [ExprStmt] ...; -# 80| 0: [MethodCall] call to method f8 -# 80| 0: [IntLiteral] 0 -# 80| 1: [DoubleLiteral] 1.1 -# 80| 2: [DoubleLiteral] 2.2 -# 81| 5: [ExprStmt] ...; +# 78| 0: [IntLiteral] 0 +# 78| 1: [ParameterAccess] access to parameter args +# 79| 3: [ExprStmt] ...; +# 79| 0: [MethodCall] call to method f8`1 +# 79| 0: [ParameterAccess] access to parameter args +# 79| 1: [IntLiteral] 0 +# 81| 4: [ExprStmt] ...; # 81| 0: [MethodCall] call to method f8 # 81| 0: [IntLiteral] 0 -# 81| 1: [ArrayCreation] array creation of type Double[] -# 81| -2: [TypeMention] Double[] -# 81| 1: [TypeMention] double -# 81| -1: [ArrayInitializer] { ..., ... } -# 81| 0: [DoubleLiteral] 1.1 -# 81| 1: [DoubleLiteral] 2.2 -# 83| 6: [ExprStmt] ...; -# 83| 0: [MethodCall] call to method f8 -# 83| 0: [IntLiteral] 0 -# 83| 1: [CastExpr] (...) ... -# 83| 1: [IntLiteral] 1 -# 83| 2: [CastExpr] (...) ... -# 83| 1: [IntLiteral] 2 -# 84| 7: [ExprStmt] ...; +# 81| 1: [DoubleLiteral] 1.1 +# 81| 2: [DoubleLiteral] 2.2 +# 82| 5: [ExprStmt] ...; +# 82| 0: [MethodCall] call to method f8 +# 82| 0: [IntLiteral] 0 +# 82| 1: [ArrayCreation] array creation of type Double[] +# 82| -2: [TypeMention] Double[] +# 82| 1: [TypeMention] double +# 82| -1: [ArrayInitializer] { ..., ... } +# 82| 0: [DoubleLiteral] 1.1 +# 82| 1: [DoubleLiteral] 2.2 +# 84| 6: [ExprStmt] ...; # 84| 0: [MethodCall] call to method f8 # 84| 0: [IntLiteral] 0 -# 84| 1: [ArrayCreation] array creation of type Double[] -# 84| -2: [TypeMention] Double[] -# 84| 1: [TypeMention] double -# 84| -1: [ArrayInitializer] { ..., ... } -# 84| 0: [CastExpr] (...) ... -# 84| 1: [IntLiteral] 1 -# 84| 1: [CastExpr] (...) ... -# 84| 1: [IntLiteral] 2 -# 85| 8: [ExprStmt] ...; +# 84| 1: [CastExpr] (...) ... +# 84| 1: [IntLiteral] 1 +# 84| 2: [CastExpr] (...) ... +# 84| 1: [IntLiteral] 2 +# 85| 7: [ExprStmt] ...; # 85| 0: [MethodCall] call to method f8 # 85| 0: [IntLiteral] 0 # 85| 1: [ArrayCreation] array creation of type Double[] @@ -337,22 +326,158 @@ arguments.cs: # 85| 1: [IntLiteral] 1 # 85| 1: [CastExpr] (...) ... # 85| 1: [IntLiteral] 2 -# 89| [Class] MyAttribute +# 86| 8: [ExprStmt] ...; +# 86| 0: [MethodCall] call to method f8 +# 86| 0: [IntLiteral] 0 +# 86| 1: [ArrayCreation] array creation of type Double[] +# 86| -2: [TypeMention] Double[] +# 86| 1: [TypeMention] double +# 86| -1: [ArrayInitializer] { ..., ... } +# 86| 0: [CastExpr] (...) ... +# 86| 1: [IntLiteral] 1 +# 86| 1: [CastExpr] (...) ... +# 86| 1: [IntLiteral] 2 +# 89| 19: [Method] f9`1 +# 89| -1: [TypeMention] Void +#-----| 1: (Type parameters) +# 89| 0: [TypeParameter] T +#-----| 2: (Parameters) +# 89| 0: [Parameter] o +# 89| -1: [TypeMention] int +# 89| 1: [Parameter] args +# 89| -1: [TypeMention] List +# 89| 1: [TypeMention] T +# 90| 4: [BlockStmt] {...} +# 91| 0: [ExprStmt] ...; +# 91| 0: [MethodCall] call to method f9`1 +# 91| 0: [IntLiteral] 0 +# 91| 1: [IndexerCall] access to indexer +# 91| -1: [ParameterAccess] access to parameter args +# 91| 0: [IntLiteral] 0 +# 91| 2: [IndexerCall] access to indexer +# 91| -1: [ParameterAccess] access to parameter args +# 91| 0: [IntLiteral] 1 +# 92| 1: [ExprStmt] ...; +# 92| 0: [MethodCall] call to method f9`1 +# 92| 0: [IntLiteral] 0 +# 92| 1: [CollectionExpression] [...] +# 92| 0: [IndexerCall] access to indexer +# 92| -1: [ParameterAccess] access to parameter args +# 92| 0: [IntLiteral] 0 +# 92| 1: [IndexerCall] access to indexer +# 92| -1: [ParameterAccess] access to parameter args +# 92| 0: [IntLiteral] 1 +# 93| 2: [ExprStmt] ...; +# 93| 0: [MethodCall] call to method f9`1 +# 93| 0: [IntLiteral] 0 +# 93| 1: [ParameterAccess] access to parameter args +# 94| 3: [ExprStmt] ...; +# 94| 0: [MethodCall] call to method f9`1 +# 94| 0: [ParameterAccess] access to parameter args +# 94| 1: [IntLiteral] 0 +# 96| 4: [ExprStmt] ...; +# 96| 0: [MethodCall] call to method f9 +# 96| 0: [IntLiteral] 0 +# 96| 1: [DoubleLiteral] 1.1 +# 96| 2: [DoubleLiteral] 2.2 +# 97| 5: [ExprStmt] ...; +# 97| 0: [MethodCall] call to method f9 +# 97| 0: [IntLiteral] 0 +# 97| 1: [CollectionExpression] [...] +# 97| 0: [DoubleLiteral] 1.1 +# 97| 1: [DoubleLiteral] 2.2 +# 99| 6: [ExprStmt] ...; +# 99| 0: [MethodCall] call to method f9 +# 99| 0: [IntLiteral] 0 +# 99| 1: [CastExpr] (...) ... +# 99| 1: [IntLiteral] 1 +# 99| 2: [CastExpr] (...) ... +# 99| 1: [IntLiteral] 2 +# 100| 7: [ExprStmt] ...; +# 100| 0: [MethodCall] call to method f9 +# 100| 0: [IntLiteral] 0 +# 100| 1: [ObjectCreation] object creation of type List +# 100| -2: [TypeMention] List +# 100| 1: [TypeMention] double +# 100| -1: [CollectionInitializer] { ..., ... } +# 100| 0: [ElementInitializer] call to method Add +# 100| 0: [CastExpr] (...) ... +# 100| 1: [IntLiteral] 1 +# 100| 1: [ElementInitializer] call to method Add +# 100| 0: [CastExpr] (...) ... +# 100| 1: [IntLiteral] 2 +# 103| 20: [Method] f10 +# 103| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 103| 0: [Parameter] o +# 103| -1: [TypeMention] int +# 103| 1: [Parameter] args +# 103| -1: [TypeMention] List +# 103| 1: [TypeMention] int +# 104| 4: [BlockStmt] {...} +# 105| 0: [ExprStmt] ...; +# 105| 0: [MethodCall] call to method f10 +# 105| 0: [IntLiteral] 0 +# 105| 1: [IntLiteral] 1 +# 105| 2: [IntLiteral] 2 +# 106| 1: [ExprStmt] ...; +# 106| 0: [MethodCall] call to method f10 +# 106| 0: [IntLiteral] 0 +# 106| 1: [CollectionExpression] [...] +# 106| 0: [IntLiteral] 1 +# 106| 1: [IntLiteral] 2 +# 107| 2: [ExprStmt] ...; +# 107| 0: [MethodCall] call to method f10 +# 107| 0: [IntLiteral] 1 +# 107| 1: [IntLiteral] 0 +# 108| 3: [ExprStmt] ...; +# 108| 0: [MethodCall] call to method f10 +# 108| 0: [IntLiteral] 0 +# 108| 1: [ParameterAccess] access to parameter args +# 109| 4: [ExprStmt] ...; +# 109| 0: [MethodCall] call to method f10 +# 109| 0: [ParameterAccess] access to parameter args +# 109| 1: [IntLiteral] 0 +# 110| 5: [ExprStmt] ...; +# 110| 0: [MethodCall] call to method f10 +# 110| 0: [CollectionExpression] [...] +# 110| 0: [IntLiteral] 1 +# 110| 1: [IntLiteral] 2 +# 110| 1: [IntLiteral] 0 +# 111| 6: [LocalVariableDeclStmt] ... ...; +# 111| 0: [LocalVariableDeclAndInitExpr] Int16 s1 = ... +# 111| -1: [TypeMention] short +# 111| 0: [LocalVariableAccess] access to local variable s1 +# 111| 1: [CastExpr] (...) ... +# 111| 1: [IntLiteral] 1 +# 111| 1: [LocalVariableDeclAndInitExpr] Int16 s2 = ... +# 111| -1: [TypeMention] short +# 111| 0: [LocalVariableAccess] access to local variable s2 +# 111| 1: [CastExpr] (...) ... +# 111| 1: [IntLiteral] 2 +# 112| 7: [ExprStmt] ...; +# 112| 0: [MethodCall] call to method f10 +# 112| 0: [IntLiteral] 0 +# 112| 1: [CastExpr] (...) ... +# 112| 1: [LocalVariableAccess] access to local variable s1 +# 112| 2: [CastExpr] (...) ... +# 112| 1: [LocalVariableAccess] access to local variable s2 +# 116| [Class] MyAttribute #-----| 3: (Base types) -# 89| 0: [TypeMention] Attribute -# 91| 4: [Field] x -# 91| -1: [TypeMention] int -# 92| 5: [Property] y -# 92| -1: [TypeMention] string -# 92| 3: [Getter] get_y -# 92| 4: [Setter] set_y +# 116| 0: [TypeMention] Attribute +# 118| 4: [Field] x +# 118| -1: [TypeMention] int +# 119| 5: [Property] y +# 119| -1: [TypeMention] string +# 119| 3: [Getter] get_y +# 119| 4: [Setter] set_y #-----| 2: (Parameters) -# 92| 0: [Parameter] value -# 93| 6: [InstanceConstructor] MyAttribute +# 119| 0: [Parameter] value +# 120| 6: [InstanceConstructor] MyAttribute #-----| 2: (Parameters) -# 93| 0: [Parameter] b -# 93| -1: [TypeMention] bool -# 93| 4: [BlockStmt] {...} +# 120| 0: [Parameter] b +# 120| -1: [TypeMention] bool +# 120| 4: [BlockStmt] {...} lambdas.cs: # 3| [Class] LambdaArgumentsTest # 5| 5: [Method] M1 diff --git a/csharp/ql/test/library-tests/arguments/argumentByName.expected b/csharp/ql/test/library-tests/arguments/argumentByName.expected index 8be061acecf0..6fcb9021d17d 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByName.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByName.expected @@ -1,66 +1,107 @@ -| arguments.cs:27:9:27:16 | call to method f1 | arguments.cs:27:15:27:15 | 2 | y | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:12:28:12 | access to local variable x | x | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:19:28:19 | access to local variable x | y | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:26:28:26 | access to local variable x | z | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:27:29:27 | access to local variable x | x | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:34:29:34 | access to local variable x | y | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:41:29:41 | access to local variable x | z | -| arguments.cs:30:9:30:38 | object creation of type ArgumentsTest | arguments.cs:30:30:30:31 | 10 | y | -| arguments.cs:30:9:30:38 | object creation of type ArgumentsTest | arguments.cs:30:37:30:37 | 5 | x | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:12:35:12 | 0 | o | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:15:35:15 | 1 | args | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:18:35:18 | 2 | args | -| arguments.cs:36:9:36:33 | call to method f3 | arguments.cs:36:12:36:12 | 0 | o | -| arguments.cs:36:9:36:33 | call to method f3 | arguments.cs:36:15:36:32 | array creation of type Int32[] | args | -| arguments.cs:37:9:37:25 | call to method f3 | arguments.cs:37:18:37:18 | 1 | args | -| arguments.cs:37:9:37:25 | call to method f3 | arguments.cs:37:24:37:24 | 0 | o | -| arguments.cs:38:9:38:19 | call to method f3 | arguments.cs:38:12:38:12 | 0 | o | -| arguments.cs:38:9:38:19 | call to method f3 | arguments.cs:38:15:38:18 | access to parameter args | args | -| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:18:39:21 | access to parameter args | args | -| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:27:39:27 | 0 | o | -| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:18:40:35 | array creation of type Int32[] | args | -| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:41:40:41 | 0 | o | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:12:42:12 | 0 | o | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:15:42:16 | (...) ... | args | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:19:42:20 | (...) ... | args | -| arguments.cs:47:9:47:39 | call to method f4 | arguments.cs:47:12:47:32 | array creation of type Object[] | args | -| arguments.cs:47:9:47:39 | call to method f4 | arguments.cs:47:35:47:38 | null | args | -| arguments.cs:56:9:56:12 | access to property Prop | arguments.cs:56:16:56:16 | 0 | value | -| arguments.cs:57:9:57:12 | access to property Prop | arguments.cs:57:16:57:25 | access to indexer | value | -| arguments.cs:57:16:57:25 | access to indexer | arguments.cs:57:21:57:21 | 1 | a | -| arguments.cs:57:16:57:25 | access to indexer | arguments.cs:57:24:57:24 | 2 | b | -| arguments.cs:58:10:58:13 | access to property Prop | arguments.cs:58:31:58:31 | 5 | value | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:21:58:21 | 3 | a | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:24:58:24 | 4 | b | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:34:58:34 | 6 | value | -| arguments.cs:60:9:60:12 | access to property Prop | arguments.cs:60:9:60:17 | ... + ... | value | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:14:61:14 | 8 | a | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:17:61:17 | 9 | b | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:9:62:26 | ... + ... | value | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:14:62:15 | 10 | a | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:14:62:15 | 10 | a | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:18:62:19 | 11 | b | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:18:62:19 | 11 | b | -| arguments.cs:64:16:64:27 | access to indexer | arguments.cs:64:21:64:22 | 15 | a | -| arguments.cs:64:16:64:27 | access to indexer | arguments.cs:64:25:64:26 | 16 | b | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:12:75:12 | 0 | o | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:15:75:21 | access to array element | args | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:24:75:30 | access to array element | args | -| arguments.cs:76:9:76:43 | call to method f8`1 | arguments.cs:76:12:76:12 | 0 | o | -| arguments.cs:76:9:76:43 | call to method f8`1 | arguments.cs:76:15:76:42 | array creation of type T[] | args | -| arguments.cs:77:9:77:19 | call to method f8`1 | arguments.cs:77:12:77:12 | 0 | o | -| arguments.cs:77:9:77:19 | call to method f8`1 | arguments.cs:77:15:77:18 | access to parameter args | args | -| arguments.cs:78:9:78:28 | call to method f8`1 | arguments.cs:78:18:78:21 | access to parameter args | args | -| arguments.cs:78:9:78:28 | call to method f8`1 | arguments.cs:78:27:78:27 | 0 | o | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:20:80:20 | 0 | o | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:23:80:25 | 1.1 | args | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:28:80:30 | 2.2 | args | -| arguments.cs:81:9:81:48 | call to method f8 | arguments.cs:81:20:81:20 | 0 | o | -| arguments.cs:81:9:81:48 | call to method f8 | arguments.cs:81:23:81:47 | array creation of type Double[] | args | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:20:83:20 | 0 | o | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:23:83:23 | (...) ... | args | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:26:83:26 | (...) ... | args | -| arguments.cs:84:9:84:44 | call to method f8 | arguments.cs:84:20:84:20 | 0 | o | -| arguments.cs:84:9:84:44 | call to method f8 | arguments.cs:84:23:84:43 | array creation of type Double[] | args | +| arguments.cs:28:9:28:16 | call to method f1 | arguments.cs:28:15:28:15 | 2 | y | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:12:29:12 | access to local variable x | x | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:19:29:19 | access to local variable x | y | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:26:29:26 | access to local variable x | z | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:27:30:27 | access to local variable x | x | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:34:30:34 | access to local variable x | y | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:41:30:41 | access to local variable x | z | +| arguments.cs:31:9:31:38 | object creation of type ArgumentsTest | arguments.cs:31:30:31:31 | 10 | y | +| arguments.cs:31:9:31:38 | object creation of type ArgumentsTest | arguments.cs:31:37:31:37 | 5 | x | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:12:36:12 | 0 | o | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:15:36:15 | 1 | args | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:18:36:18 | 2 | args | +| arguments.cs:37:9:37:33 | call to method f3 | arguments.cs:37:12:37:12 | 0 | o | +| arguments.cs:37:9:37:33 | call to method f3 | arguments.cs:37:15:37:32 | array creation of type Int32[] | args | +| arguments.cs:38:9:38:25 | call to method f3 | arguments.cs:38:18:38:18 | 1 | args | +| arguments.cs:38:9:38:25 | call to method f3 | arguments.cs:38:24:38:24 | 0 | o | +| arguments.cs:39:9:39:19 | call to method f3 | arguments.cs:39:12:39:12 | 0 | o | +| arguments.cs:39:9:39:19 | call to method f3 | arguments.cs:39:15:39:18 | access to parameter args | args | +| arguments.cs:40:9:40:28 | call to method f3 | arguments.cs:40:18:40:21 | access to parameter args | args | +| arguments.cs:40:9:40:28 | call to method f3 | arguments.cs:40:27:40:27 | 0 | o | +| arguments.cs:41:9:41:42 | call to method f3 | arguments.cs:41:18:41:35 | array creation of type Int32[] | args | +| arguments.cs:41:9:41:42 | call to method f3 | arguments.cs:41:41:41:41 | 0 | o | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:12:43:12 | 0 | o | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:15:43:16 | (...) ... | args | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:19:43:20 | (...) ... | args | +| arguments.cs:48:9:48:39 | call to method f4 | arguments.cs:48:12:48:32 | array creation of type Object[] | args | +| arguments.cs:48:9:48:39 | call to method f4 | arguments.cs:48:35:48:38 | null | args | +| arguments.cs:57:9:57:12 | access to property Prop | arguments.cs:57:16:57:16 | 0 | value | +| arguments.cs:58:9:58:12 | access to property Prop | arguments.cs:58:16:58:25 | access to indexer | value | +| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:21:58:21 | 1 | a | +| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:24:58:24 | 2 | b | +| arguments.cs:59:10:59:13 | access to property Prop | arguments.cs:59:31:59:31 | 5 | value | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:21:59:21 | 3 | a | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:24:59:24 | 4 | b | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:34:59:34 | 6 | value | +| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... + ... | value | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | a | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | b | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... + ... | value | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | a | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | a | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | b | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | b | +| arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:21:65:22 | 15 | a | +| arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:25:65:26 | 16 | b | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:12:76:12 | 0 | o | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:15:76:21 | access to array element | args | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:24:76:30 | access to array element | args | +| arguments.cs:77:9:77:43 | call to method f8`1 | arguments.cs:77:12:77:12 | 0 | o | +| arguments.cs:77:9:77:43 | call to method f8`1 | arguments.cs:77:15:77:42 | array creation of type T[] | args | +| arguments.cs:78:9:78:19 | call to method f8`1 | arguments.cs:78:12:78:12 | 0 | o | +| arguments.cs:78:9:78:19 | call to method f8`1 | arguments.cs:78:15:78:18 | access to parameter args | args | +| arguments.cs:79:9:79:28 | call to method f8`1 | arguments.cs:79:18:79:21 | access to parameter args | args | +| arguments.cs:79:9:79:28 | call to method f8`1 | arguments.cs:79:27:79:27 | 0 | o | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:20:81:20 | 0 | o | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:23:81:25 | 1.1 | args | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:28:81:30 | 2.2 | args | +| arguments.cs:82:9:82:48 | call to method f8 | arguments.cs:82:20:82:20 | 0 | o | +| arguments.cs:82:9:82:48 | call to method f8 | arguments.cs:82:23:82:47 | array creation of type Double[] | args | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:20:84:20 | 0 | o | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:23:84:23 | (...) ... | args | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:26:84:26 | (...) ... | args | | arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:20:85:20 | 0 | o | | arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:23:85:43 | array creation of type Double[] | args | +| arguments.cs:86:9:86:44 | call to method f8 | arguments.cs:86:20:86:20 | 0 | o | +| arguments.cs:86:9:86:44 | call to method f8 | arguments.cs:86:23:86:43 | array creation of type Double[] | args | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:12:91:12 | 0 | o | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:15:91:21 | access to indexer | args | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:24:91:30 | access to indexer | args | +| arguments.cs:91:15:91:21 | access to indexer | arguments.cs:91:20:91:20 | 0 | index | +| arguments.cs:91:24:91:30 | access to indexer | arguments.cs:91:29:91:29 | 1 | index | +| arguments.cs:92:9:92:33 | call to method f9`1 | arguments.cs:92:12:92:12 | 0 | o | +| arguments.cs:92:9:92:33 | call to method f9`1 | arguments.cs:92:15:92:32 | [...] | args | +| arguments.cs:92:16:92:22 | access to indexer | arguments.cs:92:21:92:21 | 0 | index | +| arguments.cs:92:25:92:31 | access to indexer | arguments.cs:92:30:92:30 | 1 | index | +| arguments.cs:93:9:93:19 | call to method f9`1 | arguments.cs:93:12:93:12 | 0 | o | +| arguments.cs:93:9:93:19 | call to method f9`1 | arguments.cs:93:15:93:18 | access to parameter args | args | +| arguments.cs:94:9:94:28 | call to method f9`1 | arguments.cs:94:18:94:21 | access to parameter args | args | +| arguments.cs:94:9:94:28 | call to method f9`1 | arguments.cs:94:27:94:27 | 0 | o | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:20:96:20 | 0 | o | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:23:96:25 | 1.1 | args | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:28:96:30 | 2.2 | args | +| arguments.cs:97:9:97:33 | call to method f9 | arguments.cs:97:20:97:20 | 0 | o | +| arguments.cs:97:9:97:33 | call to method f9 | arguments.cs:97:23:97:32 | [...] | args | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:20:99:20 | 0 | o | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:23:99:23 | (...) ... | args | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:26:99:26 | (...) ... | args | +| arguments.cs:100:9:100:48 | call to method f9 | arguments.cs:100:20:100:20 | 0 | o | +| arguments.cs:100:9:100:48 | call to method f9 | arguments.cs:100:23:100:47 | object creation of type List | args | +| arguments.cs:100:42:100:42 | call to method Add | arguments.cs:100:42:100:42 | (...) ... | item | +| arguments.cs:100:45:100:45 | call to method Add | arguments.cs:100:45:100:45 | (...) ... | item | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:13:105:13 | 0 | o | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:16:105:16 | 1 | args | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:19:105:19 | 2 | args | +| arguments.cs:106:9:106:22 | call to method f10 | arguments.cs:106:13:106:13 | 0 | o | +| arguments.cs:106:9:106:22 | call to method f10 | arguments.cs:106:16:106:21 | [...] | args | +| arguments.cs:107:9:107:26 | call to method f10 | arguments.cs:107:19:107:19 | 1 | args | +| arguments.cs:107:9:107:26 | call to method f10 | arguments.cs:107:25:107:25 | 0 | o | +| arguments.cs:108:9:108:20 | call to method f10 | arguments.cs:108:13:108:13 | 0 | o | +| arguments.cs:108:9:108:20 | call to method f10 | arguments.cs:108:16:108:19 | access to parameter args | args | +| arguments.cs:109:9:109:29 | call to method f10 | arguments.cs:109:19:109:22 | access to parameter args | args | +| arguments.cs:109:9:109:29 | call to method f10 | arguments.cs:109:28:109:28 | 0 | o | +| arguments.cs:110:9:110:31 | call to method f10 | arguments.cs:110:19:110:24 | [...] | args | +| arguments.cs:110:9:110:31 | call to method f10 | arguments.cs:110:30:110:30 | 0 | o | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:13:112:13 | 0 | o | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:16:112:17 | (...) ... | args | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:20:112:21 | (...) ... | args | diff --git a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected index a788640ca75c..ac354d31e28e 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected @@ -1,68 +1,103 @@ -| arguments.cs:27:9:27:16 | call to method f1 | arguments.cs:27:15:27:15 | 2 | arguments.cs:14:28:14:28 | y | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:12:28:12 | access to local variable x | arguments.cs:18:17:18:17 | x | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:19:28:19 | access to local variable x | arguments.cs:18:28:18:28 | y | -| arguments.cs:28:9:28:27 | call to method f2 | arguments.cs:28:26:28:26 | access to local variable x | arguments.cs:18:39:18:39 | z | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:27:29:27 | access to local variable x | arguments.cs:9:30:9:30 | x | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:34:29:34 | access to local variable x | arguments.cs:9:41:9:41 | y | -| arguments.cs:29:9:29:42 | object creation of type ArgumentsTest | arguments.cs:29:41:29:41 | access to local variable x | arguments.cs:9:52:9:52 | z | -| arguments.cs:30:9:30:38 | object creation of type ArgumentsTest | arguments.cs:30:30:30:31 | 10 | arguments.cs:5:41:5:41 | y | -| arguments.cs:30:9:30:38 | object creation of type ArgumentsTest | arguments.cs:30:37:30:37 | 5 | arguments.cs:5:30:5:30 | x | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:12:35:12 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:15:35:15 | 1 | arguments.cs:33:33:33:36 | args | -| arguments.cs:35:9:35:19 | call to method f3 | arguments.cs:35:18:35:18 | 2 | arguments.cs:33:33:33:36 | args | -| arguments.cs:36:9:36:33 | call to method f3 | arguments.cs:36:12:36:12 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:36:9:36:33 | call to method f3 | arguments.cs:36:15:36:32 | array creation of type Int32[] | arguments.cs:33:33:33:36 | args | -| arguments.cs:37:9:37:25 | call to method f3 | arguments.cs:37:18:37:18 | 1 | arguments.cs:33:33:33:36 | args | -| arguments.cs:37:9:37:25 | call to method f3 | arguments.cs:37:24:37:24 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:38:9:38:19 | call to method f3 | arguments.cs:38:12:38:12 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:38:9:38:19 | call to method f3 | arguments.cs:38:15:38:18 | access to parameter args | arguments.cs:33:33:33:36 | args | -| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:18:39:21 | access to parameter args | arguments.cs:33:33:33:36 | args | -| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:27:39:27 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:18:40:35 | array creation of type Int32[] | arguments.cs:33:33:33:36 | args | -| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:41:40:41 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:12:42:12 | 0 | arguments.cs:33:17:33:17 | o | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:15:42:16 | (...) ... | arguments.cs:33:33:33:36 | args | -| arguments.cs:42:9:42:21 | call to method f3 | arguments.cs:42:19:42:20 | (...) ... | arguments.cs:33:33:33:36 | args | -| arguments.cs:47:9:47:39 | call to method f4 | arguments.cs:47:12:47:32 | array creation of type Object[] | arguments.cs:45:29:45:32 | args | -| arguments.cs:47:9:47:39 | call to method f4 | arguments.cs:47:35:47:38 | null | arguments.cs:45:29:45:32 | args | -| arguments.cs:56:9:56:12 | access to property Prop | arguments.cs:56:16:56:16 | 0 | arguments.cs:50:21:50:23 | value | -| arguments.cs:57:9:57:12 | access to property Prop | arguments.cs:57:16:57:25 | access to indexer | arguments.cs:50:21:50:23 | value | -| arguments.cs:57:16:57:25 | access to indexer | arguments.cs:57:21:57:21 | 1 | arguments.cs:52:18:52:18 | a | -| arguments.cs:57:16:57:25 | access to indexer | arguments.cs:57:24:57:24 | 2 | arguments.cs:52:25:52:25 | b | -| arguments.cs:58:10:58:13 | access to property Prop | arguments.cs:58:31:58:31 | 5 | arguments.cs:50:21:50:23 | value | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:21:58:21 | 3 | arguments.cs:52:18:52:18 | a | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:24:58:24 | 4 | arguments.cs:52:25:52:25 | b | -| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:34:58:34 | 6 | arguments.cs:52:44:52:46 | value | -| arguments.cs:60:9:60:12 | access to property Prop | arguments.cs:60:9:60:17 | ... + ... | arguments.cs:50:21:50:23 | value | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:14:61:14 | 8 | arguments.cs:52:18:52:18 | a | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:14:61:14 | 8 | arguments.cs:52:18:52:18 | a | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:17:61:17 | 9 | arguments.cs:52:25:52:25 | b | -| arguments.cs:61:9:61:18 | access to indexer | arguments.cs:61:17:61:17 | 9 | arguments.cs:52:25:52:25 | b | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:9:62:26 | ... + ... | arguments.cs:52:44:52:46 | value | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:14:62:15 | 10 | arguments.cs:52:18:52:18 | a | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:14:62:15 | 10 | arguments.cs:52:18:52:18 | a | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:18:62:19 | 11 | arguments.cs:52:25:52:25 | b | -| arguments.cs:62:9:62:20 | access to indexer | arguments.cs:62:18:62:19 | 11 | arguments.cs:52:25:52:25 | b | -| arguments.cs:64:16:64:27 | access to indexer | arguments.cs:64:21:64:22 | 15 | arguments.cs:52:18:52:18 | a | -| arguments.cs:64:16:64:27 | access to indexer | arguments.cs:64:25:64:26 | 16 | arguments.cs:52:25:52:25 | b | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:12:75:12 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:15:75:21 | access to array element | arguments.cs:73:34:73:37 | args | -| arguments.cs:75:9:75:31 | call to method f8`1 | arguments.cs:75:24:75:30 | access to array element | arguments.cs:73:34:73:37 | args | -| arguments.cs:76:9:76:43 | call to method f8`1 | arguments.cs:76:12:76:12 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:76:9:76:43 | call to method f8`1 | arguments.cs:76:15:76:42 | array creation of type T[] | arguments.cs:73:34:73:37 | args | -| arguments.cs:77:9:77:19 | call to method f8`1 | arguments.cs:77:12:77:12 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:77:9:77:19 | call to method f8`1 | arguments.cs:77:15:77:18 | access to parameter args | arguments.cs:73:34:73:37 | args | -| arguments.cs:78:9:78:28 | call to method f8`1 | arguments.cs:78:18:78:21 | access to parameter args | arguments.cs:73:34:73:37 | args | -| arguments.cs:78:9:78:28 | call to method f8`1 | arguments.cs:78:27:78:27 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:20:80:20 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:23:80:25 | 1.1 | arguments.cs:73:34:73:37 | args | -| arguments.cs:80:9:80:31 | call to method f8 | arguments.cs:80:28:80:30 | 2.2 | arguments.cs:73:34:73:37 | args | -| arguments.cs:81:9:81:48 | call to method f8 | arguments.cs:81:20:81:20 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:81:9:81:48 | call to method f8 | arguments.cs:81:23:81:47 | array creation of type Double[] | arguments.cs:73:34:73:37 | args | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:20:83:20 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:23:83:23 | (...) ... | arguments.cs:73:34:73:37 | args | -| arguments.cs:83:9:83:27 | call to method f8 | arguments.cs:83:26:83:26 | (...) ... | arguments.cs:73:34:73:37 | args | -| arguments.cs:84:9:84:44 | call to method f8 | arguments.cs:84:20:84:20 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:84:9:84:44 | call to method f8 | arguments.cs:84:23:84:43 | array creation of type Double[] | arguments.cs:73:34:73:37 | args | -| arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:20:85:20 | 0 | arguments.cs:73:20:73:20 | o | -| arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:23:85:43 | array creation of type Double[] | arguments.cs:73:34:73:37 | args | +| arguments.cs:28:9:28:16 | call to method f1 | arguments.cs:28:15:28:15 | 2 | arguments.cs:15:28:15:28 | y | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:12:29:12 | access to local variable x | arguments.cs:19:17:19:17 | x | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:19:29:19 | access to local variable x | arguments.cs:19:28:19:28 | y | +| arguments.cs:29:9:29:27 | call to method f2 | arguments.cs:29:26:29:26 | access to local variable x | arguments.cs:19:39:19:39 | z | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:27:30:27 | access to local variable x | arguments.cs:10:30:10:30 | x | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:34:30:34 | access to local variable x | arguments.cs:10:41:10:41 | y | +| arguments.cs:30:9:30:42 | object creation of type ArgumentsTest | arguments.cs:30:41:30:41 | access to local variable x | arguments.cs:10:52:10:52 | z | +| arguments.cs:31:9:31:38 | object creation of type ArgumentsTest | arguments.cs:31:30:31:31 | 10 | arguments.cs:6:41:6:41 | y | +| arguments.cs:31:9:31:38 | object creation of type ArgumentsTest | arguments.cs:31:37:31:37 | 5 | arguments.cs:6:30:6:30 | x | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:12:36:12 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:15:36:15 | 1 | arguments.cs:34:33:34:36 | args | +| arguments.cs:36:9:36:19 | call to method f3 | arguments.cs:36:18:36:18 | 2 | arguments.cs:34:33:34:36 | args | +| arguments.cs:37:9:37:33 | call to method f3 | arguments.cs:37:12:37:12 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:37:9:37:33 | call to method f3 | arguments.cs:37:15:37:32 | array creation of type Int32[] | arguments.cs:34:33:34:36 | args | +| arguments.cs:38:9:38:25 | call to method f3 | arguments.cs:38:18:38:18 | 1 | arguments.cs:34:33:34:36 | args | +| arguments.cs:38:9:38:25 | call to method f3 | arguments.cs:38:24:38:24 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:39:9:39:19 | call to method f3 | arguments.cs:39:12:39:12 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:39:9:39:19 | call to method f3 | arguments.cs:39:15:39:18 | access to parameter args | arguments.cs:34:33:34:36 | args | +| arguments.cs:40:9:40:28 | call to method f3 | arguments.cs:40:18:40:21 | access to parameter args | arguments.cs:34:33:34:36 | args | +| arguments.cs:40:9:40:28 | call to method f3 | arguments.cs:40:27:40:27 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:41:9:41:42 | call to method f3 | arguments.cs:41:18:41:35 | array creation of type Int32[] | arguments.cs:34:33:34:36 | args | +| arguments.cs:41:9:41:42 | call to method f3 | arguments.cs:41:41:41:41 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:12:43:12 | 0 | arguments.cs:34:17:34:17 | o | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:15:43:16 | (...) ... | arguments.cs:34:33:34:36 | args | +| arguments.cs:43:9:43:21 | call to method f3 | arguments.cs:43:19:43:20 | (...) ... | arguments.cs:34:33:34:36 | args | +| arguments.cs:48:9:48:39 | call to method f4 | arguments.cs:48:12:48:32 | array creation of type Object[] | arguments.cs:46:29:46:32 | args | +| arguments.cs:48:9:48:39 | call to method f4 | arguments.cs:48:35:48:38 | null | arguments.cs:46:29:46:32 | args | +| arguments.cs:57:9:57:12 | access to property Prop | arguments.cs:57:16:57:16 | 0 | arguments.cs:51:21:51:23 | value | +| arguments.cs:58:9:58:12 | access to property Prop | arguments.cs:58:16:58:25 | access to indexer | arguments.cs:51:21:51:23 | value | +| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:21:58:21 | 1 | arguments.cs:53:18:53:18 | a | +| arguments.cs:58:16:58:25 | access to indexer | arguments.cs:58:24:58:24 | 2 | arguments.cs:53:25:53:25 | b | +| arguments.cs:59:10:59:13 | access to property Prop | arguments.cs:59:31:59:31 | 5 | arguments.cs:51:21:51:23 | value | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:21:59:21 | 3 | arguments.cs:53:18:53:18 | a | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:24:59:24 | 4 | arguments.cs:53:25:53:25 | b | +| arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:34:59:34 | 6 | arguments.cs:53:44:53:46 | value | +| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... + ... | arguments.cs:51:21:51:23 | value | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | arguments.cs:53:18:53:18 | a | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | arguments.cs:53:18:53:18 | a | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | arguments.cs:53:25:53:25 | b | +| arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | arguments.cs:53:25:53:25 | b | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... + ... | arguments.cs:53:44:53:46 | value | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | arguments.cs:53:18:53:18 | a | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | arguments.cs:53:18:53:18 | a | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | arguments.cs:53:25:53:25 | b | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | arguments.cs:53:25:53:25 | b | +| arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:21:65:22 | 15 | arguments.cs:53:18:53:18 | a | +| arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:25:65:26 | 16 | arguments.cs:53:25:53:25 | b | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:12:76:12 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:15:76:21 | access to array element | arguments.cs:74:34:74:37 | args | +| arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:24:76:30 | access to array element | arguments.cs:74:34:74:37 | args | +| arguments.cs:77:9:77:43 | call to method f8`1 | arguments.cs:77:12:77:12 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:77:9:77:43 | call to method f8`1 | arguments.cs:77:15:77:42 | array creation of type T[] | arguments.cs:74:34:74:37 | args | +| arguments.cs:78:9:78:19 | call to method f8`1 | arguments.cs:78:12:78:12 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:78:9:78:19 | call to method f8`1 | arguments.cs:78:15:78:18 | access to parameter args | arguments.cs:74:34:74:37 | args | +| arguments.cs:79:9:79:28 | call to method f8`1 | arguments.cs:79:18:79:21 | access to parameter args | arguments.cs:74:34:74:37 | args | +| arguments.cs:79:9:79:28 | call to method f8`1 | arguments.cs:79:27:79:27 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:20:81:20 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:23:81:25 | 1.1 | arguments.cs:74:34:74:37 | args | +| arguments.cs:81:9:81:31 | call to method f8 | arguments.cs:81:28:81:30 | 2.2 | arguments.cs:74:34:74:37 | args | +| arguments.cs:82:9:82:48 | call to method f8 | arguments.cs:82:20:82:20 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:82:9:82:48 | call to method f8 | arguments.cs:82:23:82:47 | array creation of type Double[] | arguments.cs:74:34:74:37 | args | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:20:84:20 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:23:84:23 | (...) ... | arguments.cs:74:34:74:37 | args | +| arguments.cs:84:9:84:27 | call to method f8 | arguments.cs:84:26:84:26 | (...) ... | arguments.cs:74:34:74:37 | args | +| arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:20:85:20 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:85:9:85:44 | call to method f8 | arguments.cs:85:23:85:43 | array creation of type Double[] | arguments.cs:74:34:74:37 | args | +| arguments.cs:86:9:86:44 | call to method f8 | arguments.cs:86:20:86:20 | 0 | arguments.cs:74:20:74:20 | o | +| arguments.cs:86:9:86:44 | call to method f8 | arguments.cs:86:23:86:43 | array creation of type Double[] | arguments.cs:74:34:74:37 | args | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:12:91:12 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:15:91:21 | access to indexer | arguments.cs:89:38:89:41 | args | +| arguments.cs:91:9:91:31 | call to method f9`1 | arguments.cs:91:24:91:30 | access to indexer | arguments.cs:89:38:89:41 | args | +| arguments.cs:92:9:92:33 | call to method f9`1 | arguments.cs:92:12:92:12 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:92:9:92:33 | call to method f9`1 | arguments.cs:92:15:92:32 | [...] | arguments.cs:89:38:89:41 | args | +| arguments.cs:93:9:93:19 | call to method f9`1 | arguments.cs:93:12:93:12 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:93:9:93:19 | call to method f9`1 | arguments.cs:93:15:93:18 | access to parameter args | arguments.cs:89:38:89:41 | args | +| arguments.cs:94:9:94:28 | call to method f9`1 | arguments.cs:94:18:94:21 | access to parameter args | arguments.cs:89:38:89:41 | args | +| arguments.cs:94:9:94:28 | call to method f9`1 | arguments.cs:94:27:94:27 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:20:96:20 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:23:96:25 | 1.1 | arguments.cs:89:38:89:41 | args | +| arguments.cs:96:9:96:31 | call to method f9 | arguments.cs:96:28:96:30 | 2.2 | arguments.cs:89:38:89:41 | args | +| arguments.cs:97:9:97:33 | call to method f9 | arguments.cs:97:20:97:20 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:97:9:97:33 | call to method f9 | arguments.cs:97:23:97:32 | [...] | arguments.cs:89:38:89:41 | args | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:20:99:20 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:23:99:23 | (...) ... | arguments.cs:89:38:89:41 | args | +| arguments.cs:99:9:99:27 | call to method f9 | arguments.cs:99:26:99:26 | (...) ... | arguments.cs:89:38:89:41 | args | +| arguments.cs:100:9:100:48 | call to method f9 | arguments.cs:100:20:100:20 | 0 | arguments.cs:89:20:89:20 | o | +| arguments.cs:100:9:100:48 | call to method f9 | arguments.cs:100:23:100:47 | object creation of type List | arguments.cs:89:38:89:41 | args | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:13:105:13 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:16:105:16 | 1 | arguments.cs:103:38:103:41 | args | +| arguments.cs:105:9:105:20 | call to method f10 | arguments.cs:105:19:105:19 | 2 | arguments.cs:103:38:103:41 | args | +| arguments.cs:106:9:106:22 | call to method f10 | arguments.cs:106:13:106:13 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:106:9:106:22 | call to method f10 | arguments.cs:106:16:106:21 | [...] | arguments.cs:103:38:103:41 | args | +| arguments.cs:107:9:107:26 | call to method f10 | arguments.cs:107:19:107:19 | 1 | arguments.cs:103:38:103:41 | args | +| arguments.cs:107:9:107:26 | call to method f10 | arguments.cs:107:25:107:25 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:108:9:108:20 | call to method f10 | arguments.cs:108:13:108:13 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:108:9:108:20 | call to method f10 | arguments.cs:108:16:108:19 | access to parameter args | arguments.cs:103:38:103:41 | args | +| arguments.cs:109:9:109:29 | call to method f10 | arguments.cs:109:19:109:22 | access to parameter args | arguments.cs:103:38:103:41 | args | +| arguments.cs:109:9:109:29 | call to method f10 | arguments.cs:109:28:109:28 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:110:9:110:31 | call to method f10 | arguments.cs:110:19:110:24 | [...] | arguments.cs:103:38:103:41 | args | +| arguments.cs:110:9:110:31 | call to method f10 | arguments.cs:110:30:110:30 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:13:112:13 | 0 | arguments.cs:103:18:103:18 | o | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:16:112:17 | (...) ... | arguments.cs:103:38:103:41 | args | +| arguments.cs:112:9:112:22 | call to method f10 | arguments.cs:112:20:112:21 | (...) ... | arguments.cs:103:38:103:41 | args | diff --git a/csharp/ql/test/library-tests/arguments/argumentByParameter.ql b/csharp/ql/test/library-tests/arguments/argumentByParameter.ql index 403afcaba20c..7e493d86a80a 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByParameter.ql +++ b/csharp/ql/test/library-tests/arguments/argumentByParameter.ql @@ -1,5 +1,7 @@ import csharp from Call call, Expr arg, Parameter param -where arg = call.getArgumentForParameter(param) +where + arg = call.getArgumentForParameter(param) and + call.getTarget().fromSource() select call, arg, param diff --git a/csharp/ql/test/library-tests/arguments/argumentName.expected b/csharp/ql/test/library-tests/arguments/argumentName.expected index 3cc067dfab42..21b2e2809ba0 100644 --- a/csharp/ql/test/library-tests/arguments/argumentName.expected +++ b/csharp/ql/test/library-tests/arguments/argumentName.expected @@ -1,15 +1,23 @@ -| arguments.cs:27:15:27:15 | 2 | y | -| arguments.cs:30:30:30:31 | 10 | y | -| arguments.cs:30:37:30:37 | 5 | x | -| arguments.cs:37:18:37:18 | 1 | args | -| arguments.cs:37:24:37:24 | 0 | o | -| arguments.cs:39:18:39:21 | access to parameter args | args | -| arguments.cs:39:27:39:27 | 0 | o | -| arguments.cs:40:18:40:35 | array creation of type Int32[] | args | -| arguments.cs:40:41:40:41 | 0 | o | -| arguments.cs:70:28:70:29 | "" | y | -| arguments.cs:70:36:70:36 | 0 | x | -| arguments.cs:78:18:78:21 | access to parameter args | args | -| arguments.cs:78:27:78:27 | 0 | o | +| arguments.cs:28:15:28:15 | 2 | y | +| arguments.cs:31:30:31:31 | 10 | y | +| arguments.cs:31:37:31:37 | 5 | x | +| arguments.cs:38:18:38:18 | 1 | args | +| arguments.cs:38:24:38:24 | 0 | o | +| arguments.cs:40:18:40:21 | access to parameter args | args | +| arguments.cs:40:27:40:27 | 0 | o | +| arguments.cs:41:18:41:35 | array creation of type Int32[] | args | +| arguments.cs:41:41:41:41 | 0 | o | +| arguments.cs:71:28:71:29 | "" | y | +| arguments.cs:71:36:71:36 | 0 | x | +| arguments.cs:79:18:79:21 | access to parameter args | args | +| arguments.cs:79:27:79:27 | 0 | o | +| arguments.cs:94:18:94:21 | access to parameter args | args | +| arguments.cs:94:27:94:27 | 0 | o | +| arguments.cs:107:19:107:19 | 1 | args | +| arguments.cs:107:25:107:25 | 0 | o | +| arguments.cs:109:19:109:22 | access to parameter args | args | +| arguments.cs:109:28:109:28 | 0 | o | +| arguments.cs:110:19:110:24 | [...] | args | +| arguments.cs:110:30:110:30 | 0 | o | | lambdas.cs:25:16:25:16 | 4 | y | | lambdas.cs:25:22:25:22 | 5 | x | diff --git a/csharp/ql/test/library-tests/arguments/argumentType.expected b/csharp/ql/test/library-tests/arguments/argumentType.expected index 30681f267b33..0dac70193453 100644 --- a/csharp/ql/test/library-tests/arguments/argumentType.expected +++ b/csharp/ql/test/library-tests/arguments/argumentType.expected @@ -1,75 +1,114 @@ -| arguments.cs:27:15:27:15 | 2 | 0 | -| arguments.cs:28:12:28:12 | access to local variable x | 0 | -| arguments.cs:28:19:28:19 | access to local variable x | 2 | -| arguments.cs:28:26:28:26 | access to local variable x | 1 | -| arguments.cs:29:27:29:27 | access to local variable x | 0 | -| arguments.cs:29:34:29:34 | access to local variable x | 2 | -| arguments.cs:29:41:29:41 | access to local variable x | 1 | -| arguments.cs:30:30:30:31 | 10 | 0 | -| arguments.cs:30:37:30:37 | 5 | 0 | -| arguments.cs:35:12:35:12 | 0 | 0 | -| arguments.cs:35:15:35:15 | 1 | 0 | -| arguments.cs:35:18:35:18 | 2 | 0 | +| arguments.cs:28:15:28:15 | 2 | 0 | +| arguments.cs:29:12:29:12 | access to local variable x | 0 | +| arguments.cs:29:19:29:19 | access to local variable x | 2 | +| arguments.cs:29:26:29:26 | access to local variable x | 1 | +| arguments.cs:30:27:30:27 | access to local variable x | 0 | +| arguments.cs:30:34:30:34 | access to local variable x | 2 | +| arguments.cs:30:41:30:41 | access to local variable x | 1 | +| arguments.cs:31:30:31:31 | 10 | 0 | +| arguments.cs:31:37:31:37 | 5 | 0 | | arguments.cs:36:12:36:12 | 0 | 0 | -| arguments.cs:36:15:36:32 | array creation of type Int32[] | 0 | -| arguments.cs:37:18:37:18 | 1 | 0 | -| arguments.cs:37:24:37:24 | 0 | 0 | -| arguments.cs:38:12:38:12 | 0 | 0 | -| arguments.cs:38:15:38:18 | access to parameter args | 0 | -| arguments.cs:39:18:39:21 | access to parameter args | 0 | -| arguments.cs:39:27:39:27 | 0 | 0 | -| arguments.cs:40:18:40:35 | array creation of type Int32[] | 0 | -| arguments.cs:40:41:40:41 | 0 | 0 | -| arguments.cs:42:12:42:12 | 0 | 0 | -| arguments.cs:42:15:42:16 | (...) ... | 0 | -| arguments.cs:42:19:42:20 | (...) ... | 0 | -| arguments.cs:47:12:47:32 | array creation of type Object[] | 0 | -| arguments.cs:47:35:47:38 | null | 0 | -| arguments.cs:57:21:57:21 | 1 | 0 | -| arguments.cs:57:24:57:24 | 2 | 0 | -| arguments.cs:58:10:58:13 | access to property Prop | 0 | -| arguments.cs:58:16:58:25 | access to indexer | 0 | -| arguments.cs:58:21:58:21 | 3 | 0 | -| arguments.cs:58:24:58:24 | 4 | 0 | -| arguments.cs:58:31:58:31 | 5 | 0 | -| arguments.cs:58:34:58:34 | 6 | 0 | -| arguments.cs:61:14:61:14 | 8 | 0 | -| arguments.cs:61:17:61:17 | 9 | 0 | -| arguments.cs:62:14:62:15 | 10 | 0 | -| arguments.cs:62:14:62:15 | 10 | 0 | -| arguments.cs:62:18:62:19 | 11 | 0 | -| arguments.cs:62:18:62:19 | 11 | 0 | -| arguments.cs:63:22:63:23 | 13 | 0 | -| arguments.cs:63:26:63:27 | 14 | 0 | -| arguments.cs:64:10:64:13 | access to property Prop | 0 | -| arguments.cs:64:16:64:27 | access to indexer | 0 | -| arguments.cs:64:21:64:22 | 15 | 0 | -| arguments.cs:64:25:64:26 | 16 | 0 | -| arguments.cs:75:12:75:12 | 0 | 0 | -| arguments.cs:75:15:75:21 | access to array element | 0 | -| arguments.cs:75:20:75:20 | 0 | 0 | -| arguments.cs:75:24:75:30 | access to array element | 0 | -| arguments.cs:75:29:75:29 | 1 | 0 | +| arguments.cs:36:15:36:15 | 1 | 0 | +| arguments.cs:36:18:36:18 | 2 | 0 | +| arguments.cs:37:12:37:12 | 0 | 0 | +| arguments.cs:37:15:37:32 | array creation of type Int32[] | 0 | +| arguments.cs:38:18:38:18 | 1 | 0 | +| arguments.cs:38:24:38:24 | 0 | 0 | +| arguments.cs:39:12:39:12 | 0 | 0 | +| arguments.cs:39:15:39:18 | access to parameter args | 0 | +| arguments.cs:40:18:40:21 | access to parameter args | 0 | +| arguments.cs:40:27:40:27 | 0 | 0 | +| arguments.cs:41:18:41:35 | array creation of type Int32[] | 0 | +| arguments.cs:41:41:41:41 | 0 | 0 | +| arguments.cs:43:12:43:12 | 0 | 0 | +| arguments.cs:43:15:43:16 | (...) ... | 0 | +| arguments.cs:43:19:43:20 | (...) ... | 0 | +| arguments.cs:48:12:48:32 | array creation of type Object[] | 0 | +| arguments.cs:48:35:48:38 | null | 0 | +| arguments.cs:58:21:58:21 | 1 | 0 | +| arguments.cs:58:24:58:24 | 2 | 0 | +| arguments.cs:59:10:59:13 | access to property Prop | 0 | +| arguments.cs:59:16:59:25 | access to indexer | 0 | +| arguments.cs:59:21:59:21 | 3 | 0 | +| arguments.cs:59:24:59:24 | 4 | 0 | +| arguments.cs:59:31:59:31 | 5 | 0 | +| arguments.cs:59:34:59:34 | 6 | 0 | +| arguments.cs:62:14:62:14 | 8 | 0 | +| arguments.cs:62:17:62:17 | 9 | 0 | +| arguments.cs:63:14:63:15 | 10 | 0 | +| arguments.cs:63:14:63:15 | 10 | 0 | +| arguments.cs:63:18:63:19 | 11 | 0 | +| arguments.cs:63:18:63:19 | 11 | 0 | +| arguments.cs:64:22:64:23 | 13 | 0 | +| arguments.cs:64:26:64:27 | 14 | 0 | +| arguments.cs:65:10:65:13 | access to property Prop | 0 | +| arguments.cs:65:16:65:27 | access to indexer | 0 | +| arguments.cs:65:21:65:22 | 15 | 0 | +| arguments.cs:65:25:65:26 | 16 | 0 | | arguments.cs:76:12:76:12 | 0 | 0 | -| arguments.cs:76:15:76:42 | array creation of type T[] | 0 | -| arguments.cs:76:30:76:30 | 0 | 0 | -| arguments.cs:76:39:76:39 | 1 | 0 | +| arguments.cs:76:15:76:21 | access to array element | 0 | +| arguments.cs:76:20:76:20 | 0 | 0 | +| arguments.cs:76:24:76:30 | access to array element | 0 | +| arguments.cs:76:29:76:29 | 1 | 0 | | arguments.cs:77:12:77:12 | 0 | 0 | -| arguments.cs:77:15:77:18 | access to parameter args | 0 | -| arguments.cs:78:18:78:21 | access to parameter args | 0 | -| arguments.cs:78:27:78:27 | 0 | 0 | -| arguments.cs:80:20:80:20 | 0 | 0 | -| arguments.cs:80:23:80:25 | 1.1 | 0 | -| arguments.cs:80:28:80:30 | 2.2 | 0 | +| arguments.cs:77:15:77:42 | array creation of type T[] | 0 | +| arguments.cs:77:30:77:30 | 0 | 0 | +| arguments.cs:77:39:77:39 | 1 | 0 | +| arguments.cs:78:12:78:12 | 0 | 0 | +| arguments.cs:78:15:78:18 | access to parameter args | 0 | +| arguments.cs:79:18:79:21 | access to parameter args | 0 | +| arguments.cs:79:27:79:27 | 0 | 0 | | arguments.cs:81:20:81:20 | 0 | 0 | -| arguments.cs:81:23:81:47 | array creation of type Double[] | 0 | -| arguments.cs:83:20:83:20 | 0 | 0 | -| arguments.cs:83:23:83:23 | (...) ... | 0 | -| arguments.cs:83:26:83:26 | (...) ... | 0 | +| arguments.cs:81:23:81:25 | 1.1 | 0 | +| arguments.cs:81:28:81:30 | 2.2 | 0 | +| arguments.cs:82:20:82:20 | 0 | 0 | +| arguments.cs:82:23:82:47 | array creation of type Double[] | 0 | | arguments.cs:84:20:84:20 | 0 | 0 | -| arguments.cs:84:23:84:43 | array creation of type Double[] | 0 | +| arguments.cs:84:23:84:23 | (...) ... | 0 | +| arguments.cs:84:26:84:26 | (...) ... | 0 | | arguments.cs:85:20:85:20 | 0 | 0 | | arguments.cs:85:23:85:43 | array creation of type Double[] | 0 | +| arguments.cs:86:20:86:20 | 0 | 0 | +| arguments.cs:86:23:86:43 | array creation of type Double[] | 0 | +| arguments.cs:91:12:91:12 | 0 | 0 | +| arguments.cs:91:15:91:21 | access to indexer | 0 | +| arguments.cs:91:20:91:20 | 0 | 0 | +| arguments.cs:91:24:91:30 | access to indexer | 0 | +| arguments.cs:91:29:91:29 | 1 | 0 | +| arguments.cs:92:12:92:12 | 0 | 0 | +| arguments.cs:92:15:92:32 | [...] | 0 | +| arguments.cs:92:21:92:21 | 0 | 0 | +| arguments.cs:92:30:92:30 | 1 | 0 | +| arguments.cs:93:12:93:12 | 0 | 0 | +| arguments.cs:93:15:93:18 | access to parameter args | 0 | +| arguments.cs:94:18:94:21 | access to parameter args | 0 | +| arguments.cs:94:27:94:27 | 0 | 0 | +| arguments.cs:96:20:96:20 | 0 | 0 | +| arguments.cs:96:23:96:25 | 1.1 | 0 | +| arguments.cs:96:28:96:30 | 2.2 | 0 | +| arguments.cs:97:20:97:20 | 0 | 0 | +| arguments.cs:97:23:97:32 | [...] | 0 | +| arguments.cs:99:20:99:20 | 0 | 0 | +| arguments.cs:99:23:99:23 | (...) ... | 0 | +| arguments.cs:99:26:99:26 | (...) ... | 0 | +| arguments.cs:100:20:100:20 | 0 | 0 | +| arguments.cs:100:23:100:47 | object creation of type List | 0 | +| arguments.cs:105:13:105:13 | 0 | 0 | +| arguments.cs:105:16:105:16 | 1 | 0 | +| arguments.cs:105:19:105:19 | 2 | 0 | +| arguments.cs:106:13:106:13 | 0 | 0 | +| arguments.cs:106:16:106:21 | [...] | 0 | +| arguments.cs:107:19:107:19 | 1 | 0 | +| arguments.cs:107:25:107:25 | 0 | 0 | +| arguments.cs:108:13:108:13 | 0 | 0 | +| arguments.cs:108:16:108:19 | access to parameter args | 0 | +| arguments.cs:109:19:109:22 | access to parameter args | 0 | +| arguments.cs:109:28:109:28 | 0 | 0 | +| arguments.cs:110:19:110:24 | [...] | 0 | +| arguments.cs:110:30:110:30 | 0 | 0 | +| arguments.cs:112:13:112:13 | 0 | 0 | +| arguments.cs:112:16:112:17 | (...) ... | 0 | +| arguments.cs:112:20:112:21 | (...) ... | 0 | | lambdas.cs:8:12:8:12 | 1 | 0 | | lambdas.cs:11:12:11:12 | 2 | 0 | | lambdas.cs:11:15:11:15 | 3 | 0 | diff --git a/csharp/ql/test/library-tests/arguments/arguments.cs b/csharp/ql/test/library-tests/arguments/arguments.cs index 4405a16cef0f..8e8734a3b42d 100644 --- a/csharp/ql/test/library-tests/arguments/arguments.cs +++ b/csharp/ql/test/library-tests/arguments/arguments.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; class ArgumentsTest { @@ -84,6 +85,32 @@ void f8(int o, params T[] args) f8(0, new double[] { 1, 2 }); f8(0, new double[] { 1, 2 }); } + + void f9(int o, params List args) + { + f9(0, args[0], args[1]); + f9(0, [args[0], args[1]]); + f9(0, args); + f9(args: args, o: 0); + + f9(0, 1.1, 2.2); + f9(0, [1.1, 2.2]); + + f9(0, 1, 2); + f9(0, new List { 1, 2 }); + } + + void f10(int o, params List args) + { + f10(0, 1, 2); + f10(0, [1, 2]); + f10(args: 1, o: 0); + f10(0, args); + f10(args: args, o: 0); + f10(args: [1, 2], o: 0); + short s1 = 1, s2 = 2; + f10(0, s1, s2); + } } class MyAttribute : Attribute diff --git a/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected b/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected index 23ecf0074c71..6f25b07e2e5a 100644 --- a/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected +++ b/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected @@ -1,68 +1,103 @@ -| arguments.cs:5:30:5:30 | x | arguments.cs:30:37:30:37 | 5 | -| arguments.cs:5:41:5:41 | y | arguments.cs:30:30:30:31 | 10 | -| arguments.cs:9:30:9:30 | x | arguments.cs:29:27:29:27 | access to local variable x | -| arguments.cs:9:41:9:41 | y | arguments.cs:29:34:29:34 | access to local variable x | -| arguments.cs:9:52:9:52 | z | arguments.cs:29:41:29:41 | access to local variable x | -| arguments.cs:14:28:14:28 | y | arguments.cs:27:15:27:15 | 2 | -| arguments.cs:18:17:18:17 | x | arguments.cs:28:12:28:12 | access to local variable x | -| arguments.cs:18:28:18:28 | y | arguments.cs:28:19:28:19 | access to local variable x | -| arguments.cs:18:39:18:39 | z | arguments.cs:28:26:28:26 | access to local variable x | -| arguments.cs:33:17:33:17 | o | arguments.cs:35:12:35:12 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:36:12:36:12 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:37:24:37:24 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:38:12:38:12 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:39:27:39:27 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:40:41:40:41 | 0 | -| arguments.cs:33:17:33:17 | o | arguments.cs:42:12:42:12 | 0 | -| arguments.cs:33:33:33:36 | args | arguments.cs:35:15:35:15 | 1 | -| arguments.cs:33:33:33:36 | args | arguments.cs:35:18:35:18 | 2 | -| arguments.cs:33:33:33:36 | args | arguments.cs:36:15:36:32 | array creation of type Int32[] | -| arguments.cs:33:33:33:36 | args | arguments.cs:37:18:37:18 | 1 | -| arguments.cs:33:33:33:36 | args | arguments.cs:38:15:38:18 | access to parameter args | -| arguments.cs:33:33:33:36 | args | arguments.cs:39:18:39:21 | access to parameter args | -| arguments.cs:33:33:33:36 | args | arguments.cs:40:18:40:35 | array creation of type Int32[] | -| arguments.cs:33:33:33:36 | args | arguments.cs:42:15:42:16 | (...) ... | -| arguments.cs:33:33:33:36 | args | arguments.cs:42:19:42:20 | (...) ... | -| arguments.cs:45:29:45:32 | args | arguments.cs:47:12:47:32 | array creation of type Object[] | -| arguments.cs:45:29:45:32 | args | arguments.cs:47:35:47:38 | null | -| arguments.cs:50:21:50:23 | value | arguments.cs:56:16:56:16 | 0 | -| arguments.cs:50:21:50:23 | value | arguments.cs:57:16:57:25 | access to indexer | -| arguments.cs:50:21:50:23 | value | arguments.cs:58:31:58:31 | 5 | -| arguments.cs:50:21:50:23 | value | arguments.cs:60:9:60:17 | ... + ... | -| arguments.cs:52:18:52:18 | a | arguments.cs:57:21:57:21 | 1 | -| arguments.cs:52:18:52:18 | a | arguments.cs:58:21:58:21 | 3 | -| arguments.cs:52:18:52:18 | a | arguments.cs:61:14:61:14 | 8 | -| arguments.cs:52:18:52:18 | a | arguments.cs:61:14:61:14 | 8 | -| arguments.cs:52:18:52:18 | a | arguments.cs:62:14:62:15 | 10 | -| arguments.cs:52:18:52:18 | a | arguments.cs:62:14:62:15 | 10 | -| arguments.cs:52:18:52:18 | a | arguments.cs:64:21:64:22 | 15 | -| arguments.cs:52:25:52:25 | b | arguments.cs:57:24:57:24 | 2 | -| arguments.cs:52:25:52:25 | b | arguments.cs:58:24:58:24 | 4 | -| arguments.cs:52:25:52:25 | b | arguments.cs:61:17:61:17 | 9 | -| arguments.cs:52:25:52:25 | b | arguments.cs:61:17:61:17 | 9 | -| arguments.cs:52:25:52:25 | b | arguments.cs:62:18:62:19 | 11 | -| arguments.cs:52:25:52:25 | b | arguments.cs:62:18:62:19 | 11 | -| arguments.cs:52:25:52:25 | b | arguments.cs:64:25:64:26 | 16 | -| arguments.cs:52:44:52:46 | value | arguments.cs:58:34:58:34 | 6 | -| arguments.cs:52:44:52:46 | value | arguments.cs:62:9:62:26 | ... + ... | -| arguments.cs:73:20:73:20 | o | arguments.cs:75:12:75:12 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:76:12:76:12 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:77:12:77:12 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:78:27:78:27 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:80:20:80:20 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:81:20:81:20 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:83:20:83:20 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:84:20:84:20 | 0 | -| arguments.cs:73:20:73:20 | o | arguments.cs:85:20:85:20 | 0 | -| arguments.cs:73:34:73:37 | args | arguments.cs:75:15:75:21 | access to array element | -| arguments.cs:73:34:73:37 | args | arguments.cs:75:24:75:30 | access to array element | -| arguments.cs:73:34:73:37 | args | arguments.cs:76:15:76:42 | array creation of type T[] | -| arguments.cs:73:34:73:37 | args | arguments.cs:77:15:77:18 | access to parameter args | -| arguments.cs:73:34:73:37 | args | arguments.cs:78:18:78:21 | access to parameter args | -| arguments.cs:73:34:73:37 | args | arguments.cs:80:23:80:25 | 1.1 | -| arguments.cs:73:34:73:37 | args | arguments.cs:80:28:80:30 | 2.2 | -| arguments.cs:73:34:73:37 | args | arguments.cs:81:23:81:47 | array creation of type Double[] | -| arguments.cs:73:34:73:37 | args | arguments.cs:83:23:83:23 | (...) ... | -| arguments.cs:73:34:73:37 | args | arguments.cs:83:26:83:26 | (...) ... | -| arguments.cs:73:34:73:37 | args | arguments.cs:84:23:84:43 | array creation of type Double[] | -| arguments.cs:73:34:73:37 | args | arguments.cs:85:23:85:43 | array creation of type Double[] | +| arguments.cs:6:30:6:30 | x | arguments.cs:31:37:31:37 | 5 | +| arguments.cs:6:41:6:41 | y | arguments.cs:31:30:31:31 | 10 | +| arguments.cs:10:30:10:30 | x | arguments.cs:30:27:30:27 | access to local variable x | +| arguments.cs:10:41:10:41 | y | arguments.cs:30:34:30:34 | access to local variable x | +| arguments.cs:10:52:10:52 | z | arguments.cs:30:41:30:41 | access to local variable x | +| arguments.cs:15:28:15:28 | y | arguments.cs:28:15:28:15 | 2 | +| arguments.cs:19:17:19:17 | x | arguments.cs:29:12:29:12 | access to local variable x | +| arguments.cs:19:28:19:28 | y | arguments.cs:29:19:29:19 | access to local variable x | +| arguments.cs:19:39:19:39 | z | arguments.cs:29:26:29:26 | access to local variable x | +| arguments.cs:34:17:34:17 | o | arguments.cs:36:12:36:12 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:37:12:37:12 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:38:24:38:24 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:39:12:39:12 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:40:27:40:27 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:41:41:41:41 | 0 | +| arguments.cs:34:17:34:17 | o | arguments.cs:43:12:43:12 | 0 | +| arguments.cs:34:33:34:36 | args | arguments.cs:36:15:36:15 | 1 | +| arguments.cs:34:33:34:36 | args | arguments.cs:36:18:36:18 | 2 | +| arguments.cs:34:33:34:36 | args | arguments.cs:37:15:37:32 | array creation of type Int32[] | +| arguments.cs:34:33:34:36 | args | arguments.cs:38:18:38:18 | 1 | +| arguments.cs:34:33:34:36 | args | arguments.cs:39:15:39:18 | access to parameter args | +| arguments.cs:34:33:34:36 | args | arguments.cs:40:18:40:21 | access to parameter args | +| arguments.cs:34:33:34:36 | args | arguments.cs:41:18:41:35 | array creation of type Int32[] | +| arguments.cs:34:33:34:36 | args | arguments.cs:43:15:43:16 | (...) ... | +| arguments.cs:34:33:34:36 | args | arguments.cs:43:19:43:20 | (...) ... | +| arguments.cs:46:29:46:32 | args | arguments.cs:48:12:48:32 | array creation of type Object[] | +| arguments.cs:46:29:46:32 | args | arguments.cs:48:35:48:38 | null | +| arguments.cs:51:21:51:23 | value | arguments.cs:57:16:57:16 | 0 | +| arguments.cs:51:21:51:23 | value | arguments.cs:58:16:58:25 | access to indexer | +| arguments.cs:51:21:51:23 | value | arguments.cs:59:31:59:31 | 5 | +| arguments.cs:51:21:51:23 | value | arguments.cs:61:9:61:17 | ... + ... | +| arguments.cs:53:18:53:18 | a | arguments.cs:58:21:58:21 | 1 | +| arguments.cs:53:18:53:18 | a | arguments.cs:59:21:59:21 | 3 | +| arguments.cs:53:18:53:18 | a | arguments.cs:62:14:62:14 | 8 | +| arguments.cs:53:18:53:18 | a | arguments.cs:62:14:62:14 | 8 | +| arguments.cs:53:18:53:18 | a | arguments.cs:63:14:63:15 | 10 | +| arguments.cs:53:18:53:18 | a | arguments.cs:63:14:63:15 | 10 | +| arguments.cs:53:18:53:18 | a | arguments.cs:65:21:65:22 | 15 | +| arguments.cs:53:25:53:25 | b | arguments.cs:58:24:58:24 | 2 | +| arguments.cs:53:25:53:25 | b | arguments.cs:59:24:59:24 | 4 | +| arguments.cs:53:25:53:25 | b | arguments.cs:62:17:62:17 | 9 | +| arguments.cs:53:25:53:25 | b | arguments.cs:62:17:62:17 | 9 | +| arguments.cs:53:25:53:25 | b | arguments.cs:63:18:63:19 | 11 | +| arguments.cs:53:25:53:25 | b | arguments.cs:63:18:63:19 | 11 | +| arguments.cs:53:25:53:25 | b | arguments.cs:65:25:65:26 | 16 | +| arguments.cs:53:44:53:46 | value | arguments.cs:59:34:59:34 | 6 | +| arguments.cs:53:44:53:46 | value | arguments.cs:63:9:63:26 | ... + ... | +| arguments.cs:74:20:74:20 | o | arguments.cs:76:12:76:12 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:77:12:77:12 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:78:12:78:12 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:79:27:79:27 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:81:20:81:20 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:82:20:82:20 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:84:20:84:20 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:85:20:85:20 | 0 | +| arguments.cs:74:20:74:20 | o | arguments.cs:86:20:86:20 | 0 | +| arguments.cs:74:34:74:37 | args | arguments.cs:76:15:76:21 | access to array element | +| arguments.cs:74:34:74:37 | args | arguments.cs:76:24:76:30 | access to array element | +| arguments.cs:74:34:74:37 | args | arguments.cs:77:15:77:42 | array creation of type T[] | +| arguments.cs:74:34:74:37 | args | arguments.cs:78:15:78:18 | access to parameter args | +| arguments.cs:74:34:74:37 | args | arguments.cs:79:18:79:21 | access to parameter args | +| arguments.cs:74:34:74:37 | args | arguments.cs:81:23:81:25 | 1.1 | +| arguments.cs:74:34:74:37 | args | arguments.cs:81:28:81:30 | 2.2 | +| arguments.cs:74:34:74:37 | args | arguments.cs:82:23:82:47 | array creation of type Double[] | +| arguments.cs:74:34:74:37 | args | arguments.cs:84:23:84:23 | (...) ... | +| arguments.cs:74:34:74:37 | args | arguments.cs:84:26:84:26 | (...) ... | +| arguments.cs:74:34:74:37 | args | arguments.cs:85:23:85:43 | array creation of type Double[] | +| arguments.cs:74:34:74:37 | args | arguments.cs:86:23:86:43 | array creation of type Double[] | +| arguments.cs:89:20:89:20 | o | arguments.cs:91:12:91:12 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:92:12:92:12 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:93:12:93:12 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:94:27:94:27 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:96:20:96:20 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:97:20:97:20 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:99:20:99:20 | 0 | +| arguments.cs:89:20:89:20 | o | arguments.cs:100:20:100:20 | 0 | +| arguments.cs:89:38:89:41 | args | arguments.cs:91:15:91:21 | access to indexer | +| arguments.cs:89:38:89:41 | args | arguments.cs:91:24:91:30 | access to indexer | +| arguments.cs:89:38:89:41 | args | arguments.cs:92:15:92:32 | [...] | +| arguments.cs:89:38:89:41 | args | arguments.cs:93:15:93:18 | access to parameter args | +| arguments.cs:89:38:89:41 | args | arguments.cs:94:18:94:21 | access to parameter args | +| arguments.cs:89:38:89:41 | args | arguments.cs:96:23:96:25 | 1.1 | +| arguments.cs:89:38:89:41 | args | arguments.cs:96:28:96:30 | 2.2 | +| arguments.cs:89:38:89:41 | args | arguments.cs:97:23:97:32 | [...] | +| arguments.cs:89:38:89:41 | args | arguments.cs:99:23:99:23 | (...) ... | +| arguments.cs:89:38:89:41 | args | arguments.cs:99:26:99:26 | (...) ... | +| arguments.cs:89:38:89:41 | args | arguments.cs:100:23:100:47 | object creation of type List | +| arguments.cs:103:18:103:18 | o | arguments.cs:105:13:105:13 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:106:13:106:13 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:107:25:107:25 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:108:13:108:13 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:109:28:109:28 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:110:30:110:30 | 0 | +| arguments.cs:103:18:103:18 | o | arguments.cs:112:13:112:13 | 0 | +| arguments.cs:103:38:103:41 | args | arguments.cs:105:16:105:16 | 1 | +| arguments.cs:103:38:103:41 | args | arguments.cs:105:19:105:19 | 2 | +| arguments.cs:103:38:103:41 | args | arguments.cs:106:16:106:21 | [...] | +| arguments.cs:103:38:103:41 | args | arguments.cs:107:19:107:19 | 1 | +| arguments.cs:103:38:103:41 | args | arguments.cs:108:16:108:19 | access to parameter args | +| arguments.cs:103:38:103:41 | args | arguments.cs:109:19:109:22 | access to parameter args | +| arguments.cs:103:38:103:41 | args | arguments.cs:110:19:110:24 | [...] | +| arguments.cs:103:38:103:41 | args | arguments.cs:112:16:112:17 | (...) ... | +| arguments.cs:103:38:103:41 | args | arguments.cs:112:20:112:21 | (...) ... | diff --git a/csharp/ql/test/library-tests/arguments/parameterGetArguments.ql b/csharp/ql/test/library-tests/arguments/parameterGetArguments.ql index 1e79bdd0aa60..76a65abf6ae9 100644 --- a/csharp/ql/test/library-tests/arguments/parameterGetArguments.ql +++ b/csharp/ql/test/library-tests/arguments/parameterGetArguments.ql @@ -1,4 +1,5 @@ import csharp from Parameter param +where param.getCallable().fromSource() select param, param.getAnAssignedArgument() diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.cs b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.cs index bee481a8cc94..7de875f241c6 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.cs @@ -35,6 +35,8 @@ public static void Sink(T t) { } public static void SinkParams(params T[] args) => Sink(args[0]); + public static void SinkCollectionParams(params IEnumerable args) => Sink(args.First()); + public void ArrayInitializerFlow() { var a = new A(); @@ -384,6 +386,14 @@ public void ParamsNoFlow(A other) SinkParams(new A[] { other }); // no flow } + public void ParamsCollectionFlow() + { + SinkCollectionParams(new A()); // flow + SinkCollectionParams(null, new A()); // flow + SinkCollectionParams(null, new A(), null); // flow + SinkCollectionParams([new A()]); // flow + } + public void ListAddClearNoFlow() { var a = new A(); diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index d6b79d7ae6b0..fd8daca17d70 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -64,289 +64,296 @@ edges | CollectionFlow.cs:36:49:36:52 | args : null [element] : A | CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | provenance | | | CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | provenance | | | CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | provenance | | -| CollectionFlow.cs:40:13:40:13 | access to local variable a : A | CollectionFlow.cs:41:27:41:27 | access to local variable a : A | provenance | | -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:40:13:40:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:41:13:41:15 | access to local variable as : null [element] : A | CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:41:13:41:15 | access to local variable as : null [element] : A | CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:41:13:41:15 | access to local variable as : null [element] : A | CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:41:13:41:15 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:41:27:41:27 | access to local variable a : A | CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | CollectionFlow.cs:42:14:42:19 | access to array element | provenance | | -| CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | provenance | | -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | provenance | | -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:44:14:44:23 | call to method First | provenance | | -| CollectionFlow.cs:58:13:58:13 | access to local variable a : A | CollectionFlow.cs:59:53:59:53 | access to local variable a : A | provenance | | -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:58:13:58:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:59:13:59:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | -| CollectionFlow.cs:59:13:59:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | -| CollectionFlow.cs:59:13:59:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | -| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:59:13:59:13 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | -| CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | provenance | | -| CollectionFlow.cs:59:53:59:53 | access to local variable a : A | CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | provenance | | -| CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | provenance | | -| CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | CollectionFlow.cs:60:14:60:20 | access to array element | provenance | | -| CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | provenance | | -| CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | provenance | | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:62:14:62:24 | call to method First | provenance | | -| CollectionFlow.cs:76:13:76:13 | access to local variable a : A | CollectionFlow.cs:78:18:78:18 | access to local variable a : A | provenance | | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:76:13:76:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:78:18:78:18 | access to local variable a : A | CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:19 | access to array element | provenance | | -| CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:81:14:81:23 | call to method First | provenance | | -| CollectionFlow.cs:96:13:96:13 | access to local variable a : A | CollectionFlow.cs:98:19:98:19 | access to local variable a : A | provenance | | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:96:13:96:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:98:19:98:19 | access to local variable a : A | CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | provenance | MaD:12 | -| CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:20 | access to indexer | provenance | MaD:11 | -| CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | provenance | MaD:11 | -| CollectionFlow.cs:115:13:115:13 | access to local variable a : A | CollectionFlow.cs:116:36:116:36 | access to local variable a : A | provenance | | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:115:13:115:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:116:13:116:16 | access to local variable list : List [element] : A | CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:116:13:116:16 | access to local variable list : List [element] : A | CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:116:13:116:16 | access to local variable list : List [element] : A | CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:116:13:116:16 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:116:36:116:36 | access to local variable a : A | CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | provenance | MaD:3 | -| CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | CollectionFlow.cs:117:14:117:20 | access to indexer | provenance | MaD:11 | -| CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | provenance | MaD:11 | -| CollectionFlow.cs:132:13:132:13 | access to local variable a : A | CollectionFlow.cs:134:18:134:18 | access to local variable a : A | provenance | | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:132:13:132:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:134:18:134:18 | access to local variable a : A | CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | -| CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:20 | access to indexer | provenance | MaD:11 | -| CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | provenance | MaD:11 | -| CollectionFlow.cs:151:13:151:13 | access to local variable a : A | CollectionFlow.cs:153:19:153:19 | access to local variable a : A | provenance | | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:13:151:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:153:19:153:19 | access to local variable a : A | CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | provenance | MaD:10 | -| CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:20 | access to indexer | provenance | MaD:6 | -| CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | provenance | MaD:6 | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | provenance | MaD:17 | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | provenance | MaD:2 | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | provenance | MaD:8 | -| CollectionFlow.cs:174:13:174:13 | access to local variable a : A | CollectionFlow.cs:175:52:175:52 | access to local variable a : A | provenance | | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:13:174:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:175:52:175:52 | access to local variable a : A | CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | MaD:5 | -| CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:20 | access to indexer | provenance | MaD:6 | -| CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | provenance | MaD:6 | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | provenance | MaD:17 | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | provenance | MaD:2 | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | provenance | MaD:8 | -| CollectionFlow.cs:195:13:195:13 | access to local variable a : A | CollectionFlow.cs:196:53:196:53 | access to local variable a : A | provenance | | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:13:195:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:196:53:196:53 | access to local variable a : A | CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | MaD:10 | -| CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:20 | access to indexer | provenance | MaD:6 | -| CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | provenance | MaD:6 | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | provenance | MaD:17 | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | provenance | MaD:2 | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | provenance | MaD:8 | -| CollectionFlow.cs:217:13:217:13 | access to local variable a : A | CollectionFlow.cs:218:49:218:49 | access to local variable a : A | provenance | | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:217:13:217:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:218:49:218:49 | access to local variable a : A | CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | MaD:4 | -| CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | MaD:1 | -| CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:219:14:219:30 | call to method First | provenance | MaD:17 | -| CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | provenance | MaD:1 | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | provenance | MaD:7 | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | provenance | MaD:17 | -| CollectionFlow.cs:236:13:236:13 | access to local variable a : A | CollectionFlow.cs:237:48:237:48 | access to local variable a : A | provenance | | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:236:13:236:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:237:48:237:48 | access to local variable a : A | CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | MaD:9 | -| CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | MaD:1 | -| CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:238:14:238:30 | call to method First | provenance | MaD:17 | -| CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | provenance | MaD:1 | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | provenance | MaD:7 | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | provenance | MaD:17 | -| CollectionFlow.cs:255:13:255:13 | access to local variable a : A | CollectionFlow.cs:256:27:256:27 | access to local variable a : A | provenance | | -| CollectionFlow.cs:255:17:255:23 | object creation of type A : A | CollectionFlow.cs:255:13:255:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:256:13:256:15 | access to local variable as : null [element] : A | CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:256:13:256:15 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:256:27:256:27 | access to local variable a : A | CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | CollectionFlow.cs:258:18:258:18 | access to local variable x | provenance | | -| CollectionFlow.cs:270:13:270:13 | access to local variable a : A | CollectionFlow.cs:271:27:271:27 | access to local variable a : A | provenance | | -| CollectionFlow.cs:270:17:270:23 | object creation of type A : A | CollectionFlow.cs:270:13:270:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:271:13:271:15 | access to local variable as : null [element] : A | CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:271:13:271:15 | access to local variable as : null [element] : A | provenance | | -| CollectionFlow.cs:271:27:271:27 | access to local variable a : A | CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:272:13:272:22 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | provenance | | -| CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | provenance | MaD:16 | -| CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | CollectionFlow.cs:272:13:272:22 | access to local variable enumerator : IEnumerator [property Current] : A | provenance | | -| CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:35 | access to property Current | provenance | | -| CollectionFlow.cs:287:13:287:13 | access to local variable a : A | CollectionFlow.cs:289:18:289:18 | access to local variable a : A | provenance | | -| CollectionFlow.cs:287:17:287:23 | object creation of type A : A | CollectionFlow.cs:287:13:287:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:289:18:289:18 | access to local variable a : A | CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | -| CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | -| CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | -| CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | provenance | MaD:15 | -| CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | provenance | MaD:15 | -| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | -| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:35 | access to property Current | provenance | | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:35 | access to property Current | provenance | MaD:14 | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:35 | access to property Current | provenance | MaD:14 | -| CollectionFlow.cs:306:13:306:13 | access to local variable a : A | CollectionFlow.cs:308:43:308:43 | access to local variable a : A | provenance | | -| CollectionFlow.cs:306:17:306:23 | object creation of type A : A | CollectionFlow.cs:306:13:306:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | provenance | | -| CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | provenance | MaD:3 | -| CollectionFlow.cs:308:43:308:43 | access to local variable a : A | CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | provenance | MaD:13 | -| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | provenance | MaD:18 | -| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | provenance | | -| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:24 | access to property Key | provenance | | -| CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:55:328:61 | access to parameter element : A | provenance | | -| CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | provenance | | -| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | provenance | | -| CollectionFlow.cs:332:13:332:13 | access to local variable a : A | CollectionFlow.cs:334:23:334:23 | access to local variable a : A | provenance | | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:332:13:332:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | provenance | | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | provenance | | -| CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:19 | access to array element | provenance | | -| CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:23 | call to method First | provenance | | -| CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:55:350:61 | access to parameter element : A | provenance | | -| CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List [element] : A | CollectionFlow.cs:350:26:350:29 | list [Return] : List [element] : A | provenance | | -| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List [element] : A | provenance | MaD:3 | -| CollectionFlow.cs:354:13:354:13 | access to local variable a : A | CollectionFlow.cs:356:23:356:23 | access to local variable a : A | provenance | | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:354:13:354:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | provenance | | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | provenance | | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | -| CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:20 | access to indexer | provenance | MaD:11 | -| CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | provenance | MaD:11 | -| CollectionFlow.cs:373:20:373:26 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | -| CollectionFlow.cs:374:26:374:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | -| CollectionFlow.cs:375:26:375:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | -| CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | CollectionFlow.cs:36:49:36:52 | args : null [element] : A | provenance | | -| CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | provenance | | -| CollectionFlow.cs:376:30:376:36 | object creation of type A : A | CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:406:13:406:13 | access to local variable a : A | CollectionFlow.cs:408:20:408:20 | access to local variable a : A | provenance | | -| CollectionFlow.cs:406:17:406:23 | object creation of type A : A | CollectionFlow.cs:406:13:406:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | provenance | | -| CollectionFlow.cs:408:20:408:20 | access to local variable a : A | CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | provenance | | -| CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:21 | access to array element | provenance | | -| CollectionFlow.cs:427:13:427:13 | access to local variable a : A | CollectionFlow.cs:428:22:428:22 | access to local variable a : A | provenance | | -| CollectionFlow.cs:427:17:427:23 | object creation of type A : A | CollectionFlow.cs:427:13:427:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:428:13:428:17 | access to local variable array : A[] [element] : A | CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | provenance | | -| CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | CollectionFlow.cs:428:13:428:17 | access to local variable array : A[] [element] : A | provenance | | -| CollectionFlow.cs:428:22:428:22 | access to local variable a : A | CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | provenance | | -| CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:429:14:429:21 | access to array element | provenance | | -| CollectionFlow.cs:434:13:434:13 | access to local variable a : A | CollectionFlow.cs:435:22:435:22 | access to local variable a : A | provenance | | -| CollectionFlow.cs:434:17:434:23 | object creation of type A : A | CollectionFlow.cs:434:13:434:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:435:17:435:17 | access to local variable l : List [element] : A | CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | provenance | | -| CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | CollectionFlow.cs:435:17:435:17 | access to local variable l : List [element] : A | provenance | | -| CollectionFlow.cs:435:22:435:22 | access to local variable a : A | CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | provenance | | -| CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | CollectionFlow.cs:436:14:436:17 | access to indexer | provenance | MaD:11 | -| CollectionFlow.cs:447:13:447:13 | access to local variable a : A | CollectionFlow.cs:448:21:448:21 | access to local variable a : A | provenance | | -| CollectionFlow.cs:447:17:447:23 | object creation of type A : A | CollectionFlow.cs:447:13:447:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:448:13:448:16 | access to local variable temp : A[] [element] : A | CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | provenance | | -| CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | CollectionFlow.cs:448:13:448:16 | access to local variable temp : A[] [element] : A | provenance | | -| CollectionFlow.cs:448:21:448:21 | access to local variable a : A | CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | provenance | | -| CollectionFlow.cs:449:13:449:17 | access to local variable array : A[] [element] : A | CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | provenance | | -| CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | CollectionFlow.cs:449:13:449:17 | access to local variable array : A[] [element] : A | provenance | | -| CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:450:14:450:21 | access to array element | provenance | | -| CollectionFlow.cs:487:13:487:13 | access to local variable a : A | CollectionFlow.cs:488:40:488:40 | access to local variable a : A | provenance | | -| CollectionFlow.cs:487:17:487:23 | object creation of type A : A | CollectionFlow.cs:487:13:487:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:488:17:488:20 | access to local variable span : Span [element] : A | CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | provenance | | -| CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:488:17:488:20 | access to local variable span : Span [element] : A | provenance | | -| CollectionFlow.cs:488:40:488:40 | access to local variable a : A | CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | provenance | MaD:23 | -| CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | CollectionFlow.cs:489:14:489:20 | access to indexer | provenance | MaD:26 | -| CollectionFlow.cs:494:13:494:13 | access to local variable a : A | CollectionFlow.cs:495:40:495:40 | access to local variable a : A | provenance | | -| CollectionFlow.cs:494:17:494:23 | object creation of type A : A | CollectionFlow.cs:494:13:494:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:495:17:495:20 | access to local variable span : Span [element] : A | CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | provenance | | -| CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:495:17:495:20 | access to local variable span : Span [element] : A | provenance | | -| CollectionFlow.cs:495:40:495:40 | access to local variable a : A | CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | provenance | MaD:23 | -| CollectionFlow.cs:496:13:496:15 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | provenance | | -| CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | provenance | MaD:25 | -| CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | CollectionFlow.cs:496:13:496:15 | access to local variable arr : T[] [element] : A | provenance | | -| CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:497:14:497:19 | access to array element | provenance | | -| CollectionFlow.cs:502:13:502:13 | access to local variable a : A | CollectionFlow.cs:503:21:503:21 | access to local variable a : A | provenance | | -| CollectionFlow.cs:502:17:502:23 | object creation of type A : A | CollectionFlow.cs:502:13:502:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | provenance | | -| CollectionFlow.cs:503:21:503:21 | access to local variable a : A | CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | provenance | MaD:22 | -| CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:22 | access to indexer | provenance | MaD:26 | -| CollectionFlow.cs:509:13:509:18 | access to local variable source : Span [element] : A | CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | provenance | | -| CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | CollectionFlow.cs:509:13:509:18 | access to local variable source : Span [element] : A | provenance | | -| CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | provenance | MaD:24 | -| CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | provenance | | -| CollectionFlow.cs:509:42:509:48 | object creation of type A : A | CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | provenance | MaD:21 | -| CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | provenance | | -| CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:22 | access to indexer | provenance | MaD:26 | -| CollectionFlow.cs:516:13:516:13 | access to local variable a : A | CollectionFlow.cs:517:60:517:60 | access to local variable a : A | provenance | | -| CollectionFlow.cs:516:17:516:23 | object creation of type A : A | CollectionFlow.cs:516:13:516:13 | access to local variable a : A | provenance | | -| CollectionFlow.cs:517:25:517:28 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | provenance | | -| CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | CollectionFlow.cs:517:25:517:28 | access to local variable span : ReadOnlySpan [element] : A | provenance | | -| CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | provenance | MaD:19 | -| CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | provenance | | -| CollectionFlow.cs:517:60:517:60 | access to local variable a : A | CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | provenance | | -| CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:20 | access to indexer | provenance | MaD:20 | +| CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | CollectionFlow.cs:38:84:38:87 | access to parameter args : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:38:84:38:87 | access to parameter args : IEnumerable [element] : A | CollectionFlow.cs:38:84:38:95 | call to method First | provenance | MaD:17 | +| CollectionFlow.cs:42:13:42:13 | access to local variable a : A | CollectionFlow.cs:43:27:43:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:42:13:42:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:43:13:43:15 | access to local variable as : null [element] : A | CollectionFlow.cs:44:14:44:16 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:43:13:43:15 | access to local variable as : null [element] : A | CollectionFlow.cs:45:18:45:20 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:43:13:43:15 | access to local variable as : null [element] : A | CollectionFlow.cs:46:20:46:22 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:43:25:43:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:43:13:43:15 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:43:27:43:27 | access to local variable a : A | CollectionFlow.cs:43:25:43:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:44:14:44:16 | access to local variable as : null [element] : A | CollectionFlow.cs:44:14:44:19 | access to array element | provenance | | +| CollectionFlow.cs:45:18:45:20 | access to local variable as : null [element] : A | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | provenance | | +| CollectionFlow.cs:46:20:46:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | provenance | | +| CollectionFlow.cs:46:20:46:22 | access to local variable as : null [element] : A | CollectionFlow.cs:46:14:46:23 | call to method First | provenance | | +| CollectionFlow.cs:60:13:60:13 | access to local variable a : A | CollectionFlow.cs:61:53:61:53 | access to local variable a : A | provenance | | +| CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:60:13:60:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:61:13:61:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:14:62:14 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:61:13:61:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:63:18:63:18 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:61:13:61:13 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:64:20:64:20 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:61:38:61:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:13:61:13 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:61:45:61:55 | { ..., ... } : A[] [element] : A | CollectionFlow.cs:61:38:61:57 | { ..., ... } : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:61:53:61:53 | access to local variable a : A | CollectionFlow.cs:61:45:61:55 | { ..., ... } : A[] [element] : A | provenance | | +| CollectionFlow.cs:62:14:62:14 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:14:62:17 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:62:14:62:17 | access to field As : A[] [element] : A | CollectionFlow.cs:62:14:62:20 | access to array element | provenance | | +| CollectionFlow.cs:63:18:63:18 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:63:18:63:21 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:63:18:63:21 | access to field As : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:64:20:64:20 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:64:20:64:23 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:64:20:64:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:64:20:64:23 | access to field As : A[] [element] : A | CollectionFlow.cs:64:14:64:24 | call to method First | provenance | | +| CollectionFlow.cs:78:13:78:13 | access to local variable a : A | CollectionFlow.cs:80:18:80:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:78:13:78:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:80:9:80:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:81:14:81:16 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:80:9:80:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:82:18:82:20 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:80:9:80:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:83:20:83:22 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:80:18:80:18 | access to local variable a : A | CollectionFlow.cs:80:9:80:11 | [post] access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:81:14:81:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:81:14:81:19 | access to array element | provenance | | +| CollectionFlow.cs:82:18:82:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:83:20:83:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:83:20:83:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:83:14:83:23 | call to method First | provenance | | +| CollectionFlow.cs:98:13:98:13 | access to local variable a : A | CollectionFlow.cs:100:19:100:19 | access to local variable a : A | provenance | | +| CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:98:13:98:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:100:9:100:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:101:14:101:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:100:9:100:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:102:22:102:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:100:9:100:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:103:24:103:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:100:19:100:19 | access to local variable a : A | CollectionFlow.cs:100:9:100:12 | [post] access to local variable list : List [element] : A | provenance | MaD:12 | +| CollectionFlow.cs:101:14:101:17 | access to local variable list : List [element] : A | CollectionFlow.cs:101:14:101:20 | access to indexer | provenance | MaD:11 | +| CollectionFlow.cs:102:22:102:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:103:24:103:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:103:24:103:27 | access to local variable list : List [element] : A | CollectionFlow.cs:103:14:103:28 | call to method ListFirst | provenance | MaD:11 | +| CollectionFlow.cs:117:13:117:13 | access to local variable a : A | CollectionFlow.cs:118:36:118:36 | access to local variable a : A | provenance | | +| CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:117:13:117:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:118:13:118:16 | access to local variable list : List [element] : A | CollectionFlow.cs:119:14:119:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:118:13:118:16 | access to local variable list : List [element] : A | CollectionFlow.cs:120:22:120:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:118:13:118:16 | access to local variable list : List [element] : A | CollectionFlow.cs:121:24:121:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:118:20:118:38 | object creation of type List : List [element] : A | CollectionFlow.cs:118:13:118:16 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:118:36:118:36 | access to local variable a : A | CollectionFlow.cs:118:20:118:38 | object creation of type List : List [element] : A | provenance | MaD:3 | +| CollectionFlow.cs:119:14:119:17 | access to local variable list : List [element] : A | CollectionFlow.cs:119:14:119:20 | access to indexer | provenance | MaD:11 | +| CollectionFlow.cs:120:22:120:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:121:24:121:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:121:24:121:27 | access to local variable list : List [element] : A | CollectionFlow.cs:121:14:121:28 | call to method ListFirst | provenance | MaD:11 | +| CollectionFlow.cs:134:13:134:13 | access to local variable a : A | CollectionFlow.cs:136:18:136:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:134:13:134:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:136:9:136:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:137:14:137:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:136:9:136:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:138:22:138:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:136:9:136:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:139:24:139:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:136:18:136:18 | access to local variable a : A | CollectionFlow.cs:136:9:136:12 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | +| CollectionFlow.cs:137:14:137:17 | access to local variable list : List [element] : A | CollectionFlow.cs:137:14:137:20 | access to indexer | provenance | MaD:11 | +| CollectionFlow.cs:138:22:138:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:139:24:139:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:139:24:139:27 | access to local variable list : List [element] : A | CollectionFlow.cs:139:14:139:28 | call to method ListFirst | provenance | MaD:11 | +| CollectionFlow.cs:153:13:153:13 | access to local variable a : A | CollectionFlow.cs:155:19:155:19 | access to local variable a : A | provenance | | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:13:153:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:14:156:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:23:157:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:28:158:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:159:29:159:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:155:19:155:19 | access to local variable a : A | CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | provenance | MaD:10 | +| CollectionFlow.cs:156:14:156:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:14:156:20 | access to indexer | provenance | MaD:6 | +| CollectionFlow.cs:157:23:157:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:158:28:158:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:158:28:158:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:14:158:32 | call to method DictIndexZero | provenance | MaD:6 | +| CollectionFlow.cs:159:29:159:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:159:29:159:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:159:14:159:33 | call to method DictFirstValue | provenance | MaD:17 | +| CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | provenance | MaD:2 | +| CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | provenance | MaD:8 | +| CollectionFlow.cs:176:13:176:13 | access to local variable a : A | CollectionFlow.cs:177:52:177:52 | access to local variable a : A | provenance | | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:13:176:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:14:178:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:179:23:179:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:28:180:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:181:29:181:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:20:177:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:177:52:177:52 | access to local variable a : A | CollectionFlow.cs:177:20:177:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | MaD:5 | +| CollectionFlow.cs:178:14:178:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:14:178:20 | access to indexer | provenance | MaD:6 | +| CollectionFlow.cs:179:23:179:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:180:28:180:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:180:28:180:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:14:180:32 | call to method DictIndexZero | provenance | MaD:6 | +| CollectionFlow.cs:181:29:181:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:181:29:181:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:181:14:181:33 | call to method DictFirstValue | provenance | MaD:17 | +| CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | provenance | MaD:2 | +| CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | provenance | MaD:8 | +| CollectionFlow.cs:197:13:197:13 | access to local variable a : A | CollectionFlow.cs:198:53:198:53 | access to local variable a : A | provenance | | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:13:197:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:14:199:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:200:23:200:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:28:201:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:202:29:202:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:20:198:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:198:53:198:53 | access to local variable a : A | CollectionFlow.cs:198:20:198:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | MaD:10 | +| CollectionFlow.cs:199:14:199:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:14:199:20 | access to indexer | provenance | MaD:6 | +| CollectionFlow.cs:200:23:200:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:201:28:201:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:201:28:201:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:14:201:32 | call to method DictIndexZero | provenance | MaD:6 | +| CollectionFlow.cs:202:29:202:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:202:29:202:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:202:14:202:33 | call to method DictFirstValue | provenance | MaD:17 | +| CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | provenance | MaD:2 | +| CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | provenance | MaD:8 | +| CollectionFlow.cs:219:13:219:13 | access to local variable a : A | CollectionFlow.cs:220:49:220:49 | access to local variable a : A | provenance | | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:219:13:219:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:222:21:222:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:224:27:224:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:220:20:220:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:220:49:220:49 | access to local variable a : A | CollectionFlow.cs:220:20:220:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | MaD:4 | +| CollectionFlow.cs:221:14:221:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | MaD:1 | +| CollectionFlow.cs:221:14:221:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:221:14:221:30 | call to method First | provenance | MaD:17 | +| CollectionFlow.cs:222:21:222:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | provenance | MaD:1 | +| CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | provenance | MaD:7 | +| CollectionFlow.cs:224:27:224:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:224:27:224:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:224:14:224:31 | call to method DictFirstKey | provenance | MaD:17 | +| CollectionFlow.cs:238:13:238:13 | access to local variable a : A | CollectionFlow.cs:239:48:239:48 | access to local variable a : A | provenance | | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:238:13:238:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:241:21:241:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:243:27:243:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:239:20:239:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:239:48:239:48 | access to local variable a : A | CollectionFlow.cs:239:20:239:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | MaD:9 | +| CollectionFlow.cs:240:14:240:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | MaD:1 | +| CollectionFlow.cs:240:14:240:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:240:14:240:30 | call to method First | provenance | MaD:17 | +| CollectionFlow.cs:241:21:241:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | provenance | MaD:1 | +| CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | provenance | MaD:7 | +| CollectionFlow.cs:243:27:243:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:243:27:243:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:243:14:243:31 | call to method DictFirstKey | provenance | MaD:17 | +| CollectionFlow.cs:257:13:257:13 | access to local variable a : A | CollectionFlow.cs:258:27:258:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:257:17:257:23 | object creation of type A : A | CollectionFlow.cs:257:13:257:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:258:13:258:15 | access to local variable as : null [element] : A | CollectionFlow.cs:259:27:259:29 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:258:25:258:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:258:13:258:15 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:258:27:258:27 | access to local variable a : A | CollectionFlow.cs:258:25:258:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:259:27:259:29 | access to local variable as : null [element] : A | CollectionFlow.cs:260:18:260:18 | access to local variable x | provenance | | +| CollectionFlow.cs:272:13:272:13 | access to local variable a : A | CollectionFlow.cs:273:27:273:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:272:17:272:23 | object creation of type A : A | CollectionFlow.cs:272:13:272:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:273:13:273:15 | access to local variable as : null [element] : A | CollectionFlow.cs:274:26:274:28 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:273:25:273:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:273:13:273:15 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:273:27:273:27 | access to local variable a : A | CollectionFlow.cs:273:25:273:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:274:13:274:22 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:276:18:276:27 | access to local variable enumerator : IEnumerator [property Current] : A | provenance | | +| CollectionFlow.cs:274:26:274:28 | access to local variable as : null [element] : A | CollectionFlow.cs:274:26:274:44 | call to method GetEnumerator : IEnumerator [property Current] : A | provenance | MaD:16 | +| CollectionFlow.cs:274:26:274:44 | call to method GetEnumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:13:274:22 | access to local variable enumerator : IEnumerator [property Current] : A | provenance | | +| CollectionFlow.cs:276:18:276:27 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:276:18:276:35 | access to property Current | provenance | | +| CollectionFlow.cs:289:13:289:13 | access to local variable a : A | CollectionFlow.cs:291:18:291:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:289:17:289:23 | object creation of type A : A | CollectionFlow.cs:289:13:289:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:291:9:291:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:292:26:292:29 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:291:18:291:18 | access to local variable a : A | CollectionFlow.cs:291:9:291:12 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | +| CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:292:26:292:29 | access to local variable list : List [element] : A | CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | provenance | MaD:15 | +| CollectionFlow.cs:292:26:292:29 | access to local variable list : List [element] : A | CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | provenance | MaD:15 | +| CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:294:18:294:35 | access to property Current | provenance | | +| CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:294:18:294:35 | access to property Current | provenance | MaD:14 | +| CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:294:18:294:35 | access to property Current | provenance | MaD:14 | +| CollectionFlow.cs:308:13:308:13 | access to local variable a : A | CollectionFlow.cs:310:43:310:43 | access to local variable a : A | provenance | | +| CollectionFlow.cs:308:17:308:23 | object creation of type A : A | CollectionFlow.cs:308:13:308:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:310:9:310:12 | [post] access to local variable list : List [element, property Key] : A | CollectionFlow.cs:311:9:311:12 | access to local variable list : List [element, property Key] : A | provenance | | +| CollectionFlow.cs:310:18:310:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | CollectionFlow.cs:310:9:310:12 | [post] access to local variable list : List [element, property Key] : A | provenance | MaD:3 | +| CollectionFlow.cs:310:43:310:43 | access to local variable a : A | CollectionFlow.cs:310:18:310:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | provenance | MaD:13 | +| CollectionFlow.cs:311:9:311:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:311:21:311:23 | kvp : KeyValuePair [property Key] : A | provenance | MaD:18 | +| CollectionFlow.cs:311:21:311:23 | kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:313:18:313:20 | access to parameter kvp : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:313:18:313:20 | access to parameter kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:313:18:313:24 | access to property Key | provenance | | +| CollectionFlow.cs:330:32:330:38 | element : A | CollectionFlow.cs:330:55:330:61 | access to parameter element : A | provenance | | +| CollectionFlow.cs:330:44:330:48 | [post] access to parameter array : A[] [element] : A | CollectionFlow.cs:330:23:330:27 | array [Return] : A[] [element] : A | provenance | | +| CollectionFlow.cs:330:55:330:61 | access to parameter element : A | CollectionFlow.cs:330:44:330:48 | [post] access to parameter array : A[] [element] : A | provenance | | +| CollectionFlow.cs:334:13:334:13 | access to local variable a : A | CollectionFlow.cs:336:23:336:23 | access to local variable a : A | provenance | | +| CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:334:13:334:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:16 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:338:18:338:20 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:339:20:339:22 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:336:23:336:23 | access to local variable a : A | CollectionFlow.cs:330:32:330:38 | element : A | provenance | | +| CollectionFlow.cs:336:23:336:23 | access to local variable a : A | CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:337:14:337:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:19 | access to array element | provenance | | +| CollectionFlow.cs:338:18:338:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:339:20:339:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:339:20:339:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:339:14:339:23 | call to method First | provenance | | +| CollectionFlow.cs:352:34:352:40 | element : A | CollectionFlow.cs:352:55:352:61 | access to parameter element : A | provenance | | +| CollectionFlow.cs:352:46:352:49 | [post] access to parameter list : List [element] : A | CollectionFlow.cs:352:26:352:29 | list [Return] : List [element] : A | provenance | | +| CollectionFlow.cs:352:55:352:61 | access to parameter element : A | CollectionFlow.cs:352:46:352:49 | [post] access to parameter list : List [element] : A | provenance | MaD:3 | +| CollectionFlow.cs:356:13:356:13 | access to local variable a : A | CollectionFlow.cs:358:23:358:23 | access to local variable a : A | provenance | | +| CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:356:13:356:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:359:14:359:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:360:22:360:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:361:24:361:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:358:23:358:23 | access to local variable a : A | CollectionFlow.cs:352:34:352:40 | element : A | provenance | | +| CollectionFlow.cs:358:23:358:23 | access to local variable a : A | CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | provenance | MaD:3 | +| CollectionFlow.cs:359:14:359:17 | access to local variable list : List [element] : A | CollectionFlow.cs:359:14:359:20 | access to indexer | provenance | MaD:11 | +| CollectionFlow.cs:360:22:360:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:361:24:361:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:361:24:361:27 | access to local variable list : List [element] : A | CollectionFlow.cs:361:14:361:28 | call to method ListFirst | provenance | MaD:11 | +| CollectionFlow.cs:375:20:375:26 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:376:26:376:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:377:26:377:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:378:20:378:38 | array creation of type A[] : null [element] : A | CollectionFlow.cs:36:49:36:52 | args : null [element] : A | provenance | | +| CollectionFlow.cs:378:28:378:38 | { ..., ... } : null [element] : A | CollectionFlow.cs:378:20:378:38 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:378:30:378:36 | object creation of type A : A | CollectionFlow.cs:378:28:378:38 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:391:30:391:36 | object creation of type A : A | CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:392:36:392:42 | object creation of type A : A | CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:393:36:393:42 | object creation of type A : A | CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:394:30:394:38 | [...] : IEnumerable [element] : A | CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:394:31:394:37 | object creation of type A : A | CollectionFlow.cs:394:30:394:38 | [...] : IEnumerable [element] : A | provenance | | +| CollectionFlow.cs:416:13:416:13 | access to local variable a : A | CollectionFlow.cs:418:20:418:20 | access to local variable a : A | provenance | | +| CollectionFlow.cs:416:17:416:23 | object creation of type A : A | CollectionFlow.cs:416:13:416:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:418:9:418:13 | [post] access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:419:14:419:18 | access to local variable array : MyInlineArray [element] : A | provenance | | +| CollectionFlow.cs:418:20:418:20 | access to local variable a : A | CollectionFlow.cs:418:9:418:13 | [post] access to local variable array : MyInlineArray [element] : A | provenance | | +| CollectionFlow.cs:419:14:419:18 | access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:419:14:419:21 | access to array element | provenance | | +| CollectionFlow.cs:437:13:437:13 | access to local variable a : A | CollectionFlow.cs:438:22:438:22 | access to local variable a : A | provenance | | +| CollectionFlow.cs:437:17:437:23 | object creation of type A : A | CollectionFlow.cs:437:13:437:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:438:13:438:17 | access to local variable array : A[] [element] : A | CollectionFlow.cs:439:14:439:18 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:438:21:438:23 | [...] : A[] [element] : A | CollectionFlow.cs:438:13:438:17 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:438:22:438:22 | access to local variable a : A | CollectionFlow.cs:438:21:438:23 | [...] : A[] [element] : A | provenance | | +| CollectionFlow.cs:439:14:439:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:439:14:439:21 | access to array element | provenance | | +| CollectionFlow.cs:444:13:444:13 | access to local variable a : A | CollectionFlow.cs:445:22:445:22 | access to local variable a : A | provenance | | +| CollectionFlow.cs:444:17:444:23 | object creation of type A : A | CollectionFlow.cs:444:13:444:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:445:17:445:17 | access to local variable l : List [element] : A | CollectionFlow.cs:446:14:446:14 | access to local variable l : List [element] : A | provenance | | +| CollectionFlow.cs:445:21:445:23 | [...] : List [element] : A | CollectionFlow.cs:445:17:445:17 | access to local variable l : List [element] : A | provenance | | +| CollectionFlow.cs:445:22:445:22 | access to local variable a : A | CollectionFlow.cs:445:21:445:23 | [...] : List [element] : A | provenance | | +| CollectionFlow.cs:446:14:446:14 | access to local variable l : List [element] : A | CollectionFlow.cs:446:14:446:17 | access to indexer | provenance | MaD:11 | +| CollectionFlow.cs:457:13:457:13 | access to local variable a : A | CollectionFlow.cs:458:21:458:21 | access to local variable a : A | provenance | | +| CollectionFlow.cs:457:17:457:23 | object creation of type A : A | CollectionFlow.cs:457:13:457:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:458:13:458:16 | access to local variable temp : A[] [element] : A | CollectionFlow.cs:459:22:459:28 | .. access to local variable temp : A[] [element] : A | provenance | | +| CollectionFlow.cs:458:20:458:22 | [...] : A[] [element] : A | CollectionFlow.cs:458:13:458:16 | access to local variable temp : A[] [element] : A | provenance | | +| CollectionFlow.cs:458:21:458:21 | access to local variable a : A | CollectionFlow.cs:458:20:458:22 | [...] : A[] [element] : A | provenance | | +| CollectionFlow.cs:459:13:459:17 | access to local variable array : A[] [element] : A | CollectionFlow.cs:460:14:460:18 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:459:22:459:28 | .. access to local variable temp : A[] [element] : A | CollectionFlow.cs:459:13:459:17 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:460:14:460:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:460:14:460:21 | access to array element | provenance | | +| CollectionFlow.cs:497:13:497:13 | access to local variable a : A | CollectionFlow.cs:498:40:498:40 | access to local variable a : A | provenance | | +| CollectionFlow.cs:497:17:497:23 | object creation of type A : A | CollectionFlow.cs:497:13:497:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:498:17:498:20 | access to local variable span : Span [element] : A | CollectionFlow.cs:499:14:499:17 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:498:24:498:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:498:17:498:20 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:498:40:498:40 | access to local variable a : A | CollectionFlow.cs:498:24:498:41 | object creation of type Span : Span [element] : A | provenance | MaD:23 | +| CollectionFlow.cs:499:14:499:17 | access to local variable span : Span [element] : A | CollectionFlow.cs:499:14:499:20 | access to indexer | provenance | MaD:26 | +| CollectionFlow.cs:504:13:504:13 | access to local variable a : A | CollectionFlow.cs:505:40:505:40 | access to local variable a : A | provenance | | +| CollectionFlow.cs:504:17:504:23 | object creation of type A : A | CollectionFlow.cs:504:13:504:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:505:17:505:20 | access to local variable span : Span [element] : A | CollectionFlow.cs:506:19:506:22 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:505:24:505:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:505:17:505:20 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:505:40:505:40 | access to local variable a : A | CollectionFlow.cs:505:24:505:41 | object creation of type Span : Span [element] : A | provenance | MaD:23 | +| CollectionFlow.cs:506:13:506:15 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:507:14:507:16 | access to local variable arr : T[] [element] : A | provenance | | +| CollectionFlow.cs:506:19:506:22 | access to local variable span : Span [element] : A | CollectionFlow.cs:506:19:506:32 | call to method ToArray : T[] [element] : A | provenance | MaD:25 | +| CollectionFlow.cs:506:19:506:32 | call to method ToArray : T[] [element] : A | CollectionFlow.cs:506:13:506:15 | access to local variable arr : T[] [element] : A | provenance | | +| CollectionFlow.cs:507:14:507:16 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:507:14:507:19 | access to array element | provenance | | +| CollectionFlow.cs:512:13:512:13 | access to local variable a : A | CollectionFlow.cs:513:21:513:21 | access to local variable a : A | provenance | | +| CollectionFlow.cs:512:17:512:23 | object creation of type A : A | CollectionFlow.cs:512:13:512:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:513:9:513:14 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:514:14:514:19 | access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:513:21:513:21 | access to local variable a : A | CollectionFlow.cs:513:9:513:14 | [post] access to parameter target : Span [element] : A | provenance | MaD:22 | +| CollectionFlow.cs:514:14:514:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:514:14:514:22 | access to indexer | provenance | MaD:26 | +| CollectionFlow.cs:519:13:519:18 | access to local variable source : Span [element] : A | CollectionFlow.cs:520:9:520:14 | access to local variable source : Span [element] : A | provenance | | +| CollectionFlow.cs:519:22:519:51 | object creation of type Span : Span [element] : A | CollectionFlow.cs:519:13:519:18 | access to local variable source : Span [element] : A | provenance | | +| CollectionFlow.cs:519:34:519:50 | array creation of type A[] : null [element] : A | CollectionFlow.cs:519:22:519:51 | object creation of type Span : Span [element] : A | provenance | MaD:24 | +| CollectionFlow.cs:519:40:519:50 | { ..., ... } : null [element] : A | CollectionFlow.cs:519:34:519:50 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:519:42:519:48 | object creation of type A : A | CollectionFlow.cs:519:40:519:50 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:520:9:520:14 | access to local variable source : Span [element] : A | CollectionFlow.cs:520:23:520:28 | [post] access to parameter target : Span [element] : A | provenance | MaD:21 | +| CollectionFlow.cs:520:23:520:28 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:521:14:521:19 | access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:521:14:521:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:521:14:521:22 | access to indexer | provenance | MaD:26 | +| CollectionFlow.cs:526:13:526:13 | access to local variable a : A | CollectionFlow.cs:527:60:527:60 | access to local variable a : A | provenance | | +| CollectionFlow.cs:526:17:526:23 | object creation of type A : A | CollectionFlow.cs:526:13:526:13 | access to local variable a : A | provenance | | +| CollectionFlow.cs:527:25:527:28 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:528:14:528:17 | access to local variable span : ReadOnlySpan [element] : A | provenance | | +| CollectionFlow.cs:527:32:527:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | CollectionFlow.cs:527:25:527:28 | access to local variable span : ReadOnlySpan [element] : A | provenance | | +| CollectionFlow.cs:527:52:527:62 | array creation of type A[] : null [element] : A | CollectionFlow.cs:527:32:527:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | provenance | MaD:19 | +| CollectionFlow.cs:527:58:527:62 | { ..., ... } : null [element] : A | CollectionFlow.cs:527:52:527:62 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:527:60:527:60 | access to local variable a : A | CollectionFlow.cs:527:58:527:62 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:528:14:528:17 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:528:14:528:20 | access to indexer | provenance | MaD:20 | nodes | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | semmle.label | ts : A[] [element] : A | | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | semmle.label | ts : null [element] : A | @@ -396,360 +403,372 @@ nodes | CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | semmle.label | access to parameter args : A[] [element] : A | | CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | semmle.label | access to parameter args : null [element] : A | | CollectionFlow.cs:36:63:36:69 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:40:13:40:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:41:13:41:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:41:27:41:27 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:42:14:42:19 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:44:14:44:23 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:58:13:58:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:59:13:59:13 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | semmle.label | { ..., ... } : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | semmle.label | { ..., ... } : A[] [element] : A | -| CollectionFlow.cs:59:53:59:53 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | -| CollectionFlow.cs:60:14:60:20 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | -| CollectionFlow.cs:62:14:62:24 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | -| CollectionFlow.cs:76:13:76:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | semmle.label | [post] access to local variable as : A[] [element] : A | -| CollectionFlow.cs:78:18:78:18 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:79:14:79:19 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:81:14:81:23 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:96:13:96:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:98:19:98:19 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:99:14:99:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:101:14:101:28 | call to method ListFirst | semmle.label | call to method ListFirst | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:115:13:115:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:116:13:116:16 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | semmle.label | object creation of type List : List [element] : A | -| CollectionFlow.cs:116:36:116:36 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:117:14:117:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:119:14:119:28 | call to method ListFirst | semmle.label | call to method ListFirst | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:132:13:132:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:134:18:134:18 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:135:14:135:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:137:14:137:28 | call to method ListFirst | semmle.label | call to method ListFirst | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:151:13:151:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | semmle.label | [post] access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:19:153:19 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:154:14:154:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:174:13:174:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:175:13:175:16 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:52:175:52 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:176:14:176:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:195:13:195:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:196:13:196:16 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:53:196:53 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:197:14:197:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:217:13:217:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:218:13:218:16 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:49:218:49 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | semmle.label | access to property Keys : Dictionary.KeyCollection [element] : A | -| CollectionFlow.cs:219:14:219:30 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | semmle.label | call to method DictKeysFirst | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | semmle.label | call to method DictFirstKey | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:236:13:236:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:237:13:237:16 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:48:237:48 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | semmle.label | access to property Keys : Dictionary.KeyCollection [element] : A | -| CollectionFlow.cs:238:14:238:30 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | semmle.label | call to method DictKeysFirst | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | semmle.label | call to method DictFirstKey | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:255:13:255:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:255:17:255:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:256:13:256:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:256:27:256:27 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:258:18:258:18 | access to local variable x | semmle.label | access to local variable x | -| CollectionFlow.cs:270:13:270:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:270:17:270:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:271:13:271:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:271:27:271:27 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:272:13:272:22 | access to local variable enumerator : IEnumerator [property Current] : A | semmle.label | access to local variable enumerator : IEnumerator [property Current] : A | -| CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | -| CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | semmle.label | call to method GetEnumerator : IEnumerator [property Current] : A | -| CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | semmle.label | access to local variable enumerator : IEnumerator [property Current] : A | -| CollectionFlow.cs:274:18:274:35 | access to property Current | semmle.label | access to property Current | -| CollectionFlow.cs:287:13:287:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:287:17:287:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:289:18:289:18 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:290:13:290:22 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | semmle.label | call to method GetEnumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | semmle.label | call to method GetEnumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:292:18:292:35 | access to property Current | semmle.label | access to property Current | -| CollectionFlow.cs:306:13:306:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:306:17:306:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | semmle.label | [post] access to local variable list : List [element, property Key] : A | -| CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | semmle.label | object creation of type KeyValuePair : KeyValuePair [property Key] : A | -| CollectionFlow.cs:308:43:308:43 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | semmle.label | access to local variable list : List [element, property Key] : A | -| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | semmle.label | kvp : KeyValuePair [property Key] : A | -| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | semmle.label | access to parameter kvp : KeyValuePair [property Key] : A | -| CollectionFlow.cs:311:18:311:24 | access to property Key | semmle.label | access to property Key | -| CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | semmle.label | array [Return] : A[] [element] : A | -| CollectionFlow.cs:328:32:328:38 | element : A | semmle.label | element : A | -| CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | semmle.label | [post] access to parameter array : A[] [element] : A | -| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | semmle.label | access to parameter element : A | -| CollectionFlow.cs:332:13:332:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | semmle.label | [post] access to local variable as : A[] [element] : A | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:335:14:335:19 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:337:14:337:23 | call to method First | semmle.label | call to method First | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:350:26:350:29 | list [Return] : List [element] : A | semmle.label | list [Return] : List [element] : A | -| CollectionFlow.cs:350:34:350:40 | element : A | semmle.label | element : A | -| CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List [element] : A | semmle.label | [post] access to parameter list : List [element] : A | -| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | semmle.label | access to parameter element : A | -| CollectionFlow.cs:354:13:354:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:357:14:357:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:359:14:359:28 | call to method ListFirst | semmle.label | call to method ListFirst | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | -| CollectionFlow.cs:373:20:373:26 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:374:26:374:32 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:375:26:375:32 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:376:30:376:36 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:406:13:406:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:406:17:406:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | semmle.label | [post] access to local variable array : MyInlineArray [element] : A | -| CollectionFlow.cs:408:20:408:20 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | semmle.label | access to local variable array : MyInlineArray [element] : A | -| CollectionFlow.cs:409:14:409:21 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:427:13:427:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:427:17:427:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:428:13:428:17 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | semmle.label | [...] : A[] [element] : A | -| CollectionFlow.cs:428:22:428:22 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:429:14:429:21 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:434:13:434:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:434:17:434:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:435:17:435:17 | access to local variable l : List [element] : A | semmle.label | access to local variable l : List [element] : A | -| CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | semmle.label | [...] : List [element] : A | -| CollectionFlow.cs:435:22:435:22 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | semmle.label | access to local variable l : List [element] : A | -| CollectionFlow.cs:436:14:436:17 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:447:13:447:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:447:17:447:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:448:13:448:16 | access to local variable temp : A[] [element] : A | semmle.label | access to local variable temp : A[] [element] : A | -| CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | semmle.label | [...] : A[] [element] : A | -| CollectionFlow.cs:448:21:448:21 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:449:13:449:17 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | semmle.label | .. access to local variable temp : A[] [element] : A | -| CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:450:14:450:21 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:487:13:487:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:487:17:487:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:488:17:488:20 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | -| CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:488:40:488:40 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | -| CollectionFlow.cs:489:14:489:20 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:494:13:494:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:494:17:494:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:495:17:495:20 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | -| CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:495:40:495:40 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:496:13:496:15 | access to local variable arr : T[] [element] : A | semmle.label | access to local variable arr : T[] [element] : A | -| CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | -| CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | semmle.label | call to method ToArray : T[] [element] : A | -| CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | semmle.label | access to local variable arr : T[] [element] : A | -| CollectionFlow.cs:497:14:497:19 | access to array element | semmle.label | access to array element | -| CollectionFlow.cs:502:13:502:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:502:17:502:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | semmle.label | [post] access to parameter target : Span [element] : A | -| CollectionFlow.cs:503:21:503:21 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | semmle.label | access to parameter target : Span [element] : A | -| CollectionFlow.cs:504:14:504:22 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:509:13:509:18 | access to local variable source : Span [element] : A | semmle.label | access to local variable source : Span [element] : A | -| CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:509:42:509:48 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | semmle.label | access to local variable source : Span [element] : A | -| CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | semmle.label | [post] access to parameter target : Span [element] : A | -| CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | semmle.label | access to parameter target : Span [element] : A | -| CollectionFlow.cs:511:14:511:22 | access to indexer | semmle.label | access to indexer | -| CollectionFlow.cs:516:13:516:13 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:516:17:516:23 | object creation of type A : A | semmle.label | object creation of type A : A | -| CollectionFlow.cs:517:25:517:28 | access to local variable span : ReadOnlySpan [element] : A | semmle.label | access to local variable span : ReadOnlySpan [element] : A | -| CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | semmle.label | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | -| CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | -| CollectionFlow.cs:517:60:517:60 | access to local variable a : A | semmle.label | access to local variable a : A | -| CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | semmle.label | access to local variable span : ReadOnlySpan [element] : A | -| CollectionFlow.cs:518:14:518:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:38:70:38:73 | args : IEnumerable [element] : A | semmle.label | args : IEnumerable [element] : A | +| CollectionFlow.cs:38:84:38:87 | access to parameter args : IEnumerable [element] : A | semmle.label | access to parameter args : IEnumerable [element] : A | +| CollectionFlow.cs:38:84:38:95 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:42:13:42:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:42:17:42:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:43:13:43:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:43:25:43:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:43:27:43:27 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:44:14:44:16 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:44:14:44:19 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:45:18:45:20 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:46:14:46:23 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:46:20:46:22 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:60:13:60:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:60:17:60:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:61:13:61:13 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | +| CollectionFlow.cs:61:38:61:57 | { ..., ... } : CollectionFlow [field As, element] : A | semmle.label | { ..., ... } : CollectionFlow [field As, element] : A | +| CollectionFlow.cs:61:45:61:55 | { ..., ... } : A[] [element] : A | semmle.label | { ..., ... } : A[] [element] : A | +| CollectionFlow.cs:61:53:61:53 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:62:14:62:14 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | +| CollectionFlow.cs:62:14:62:17 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | +| CollectionFlow.cs:62:14:62:20 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:63:18:63:18 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | +| CollectionFlow.cs:63:18:63:21 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | +| CollectionFlow.cs:64:14:64:24 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:64:20:64:20 | access to local variable c : CollectionFlow [field As, element] : A | semmle.label | access to local variable c : CollectionFlow [field As, element] : A | +| CollectionFlow.cs:64:20:64:23 | access to field As : A[] [element] : A | semmle.label | access to field As : A[] [element] : A | +| CollectionFlow.cs:78:13:78:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:78:17:78:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:80:9:80:11 | [post] access to local variable as : A[] [element] : A | semmle.label | [post] access to local variable as : A[] [element] : A | +| CollectionFlow.cs:80:18:80:18 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:81:14:81:16 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:81:14:81:19 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:82:18:82:20 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:83:14:83:23 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:83:20:83:22 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:98:13:98:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:98:17:98:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:100:9:100:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | +| CollectionFlow.cs:100:19:100:19 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:101:14:101:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:101:14:101:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:102:22:102:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:103:14:103:28 | call to method ListFirst | semmle.label | call to method ListFirst | +| CollectionFlow.cs:103:24:103:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:117:13:117:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:117:17:117:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:118:13:118:16 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:118:20:118:38 | object creation of type List : List [element] : A | semmle.label | object creation of type List : List [element] : A | +| CollectionFlow.cs:118:36:118:36 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:119:14:119:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:119:14:119:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:120:22:120:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:121:14:121:28 | call to method ListFirst | semmle.label | call to method ListFirst | +| CollectionFlow.cs:121:24:121:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:134:13:134:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:134:17:134:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:136:9:136:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | +| CollectionFlow.cs:136:18:136:18 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:137:14:137:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:137:14:137:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:138:22:138:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:139:14:139:28 | call to method ListFirst | semmle.label | call to method ListFirst | +| CollectionFlow.cs:139:24:139:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:153:13:153:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:155:9:155:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | semmle.label | [post] access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:155:19:155:19 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:156:14:156:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:156:14:156:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:157:23:157:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:158:14:158:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | +| CollectionFlow.cs:158:28:158:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:159:14:159:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | +| CollectionFlow.cs:159:29:159:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | +| CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:176:13:176:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:177:13:177:16 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:177:20:177:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Value] : A | +| CollectionFlow.cs:177:52:177:52 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:178:14:178:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:178:14:178:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:179:23:179:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:180:14:180:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | +| CollectionFlow.cs:180:28:180:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:181:14:181:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | +| CollectionFlow.cs:181:29:181:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | +| CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:197:13:197:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:198:13:198:16 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:198:20:198:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Value] : A | +| CollectionFlow.cs:198:53:198:53 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:199:14:199:17 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:199:14:199:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:200:23:200:26 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:201:14:201:32 | call to method DictIndexZero | semmle.label | call to method DictIndexZero | +| CollectionFlow.cs:201:28:201:31 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:202:14:202:33 | call to method DictFirstValue | semmle.label | call to method DictFirstValue | +| CollectionFlow.cs:202:29:202:32 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | semmle.label | call to method DictValuesFirst | +| CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | semmle.label | access to local variable dict : Dictionary [element, property Value] : A | +| CollectionFlow.cs:219:13:219:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:220:13:220:16 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:220:20:220:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Key] : A | +| CollectionFlow.cs:220:49:220:49 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:221:14:221:17 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:221:14:221:22 | access to property Keys : Dictionary.KeyCollection [element] : A | semmle.label | access to property Keys : Dictionary.KeyCollection [element] : A | +| CollectionFlow.cs:221:14:221:30 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:222:21:222:24 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | semmle.label | call to method DictKeysFirst | +| CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:224:14:224:31 | call to method DictFirstKey | semmle.label | call to method DictFirstKey | +| CollectionFlow.cs:224:27:224:30 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:238:13:238:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:239:13:239:16 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:239:20:239:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | semmle.label | object creation of type Dictionary : Dictionary [element, property Key] : A | +| CollectionFlow.cs:239:48:239:48 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:240:14:240:17 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:240:14:240:22 | access to property Keys : Dictionary.KeyCollection [element] : A | semmle.label | access to property Keys : Dictionary.KeyCollection [element] : A | +| CollectionFlow.cs:240:14:240:30 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:241:21:241:24 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | semmle.label | call to method DictKeysFirst | +| CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:243:14:243:31 | call to method DictFirstKey | semmle.label | call to method DictFirstKey | +| CollectionFlow.cs:243:27:243:30 | access to local variable dict : Dictionary [element, property Key] : A | semmle.label | access to local variable dict : Dictionary [element, property Key] : A | +| CollectionFlow.cs:257:13:257:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:257:17:257:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:258:13:258:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:258:25:258:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:258:27:258:27 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:259:27:259:29 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:260:18:260:18 | access to local variable x | semmle.label | access to local variable x | +| CollectionFlow.cs:272:13:272:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:272:17:272:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:273:13:273:15 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:273:25:273:29 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:273:27:273:27 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:274:13:274:22 | access to local variable enumerator : IEnumerator [property Current] : A | semmle.label | access to local variable enumerator : IEnumerator [property Current] : A | +| CollectionFlow.cs:274:26:274:28 | access to local variable as : null [element] : A | semmle.label | access to local variable as : null [element] : A | +| CollectionFlow.cs:274:26:274:44 | call to method GetEnumerator : IEnumerator [property Current] : A | semmle.label | call to method GetEnumerator : IEnumerator [property Current] : A | +| CollectionFlow.cs:276:18:276:27 | access to local variable enumerator : IEnumerator [property Current] : A | semmle.label | access to local variable enumerator : IEnumerator [property Current] : A | +| CollectionFlow.cs:276:18:276:35 | access to property Current | semmle.label | access to property Current | +| CollectionFlow.cs:289:13:289:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:289:17:289:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:291:9:291:12 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | +| CollectionFlow.cs:291:18:291:18 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:292:13:292:22 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:292:26:292:29 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | semmle.label | call to method GetEnumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:292:26:292:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | semmle.label | call to method GetEnumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:294:18:294:27 | access to local variable enumerator : List.Enumerator [property Current] : A | semmle.label | access to local variable enumerator : List.Enumerator [property Current] : A | +| CollectionFlow.cs:294:18:294:35 | access to property Current | semmle.label | access to property Current | +| CollectionFlow.cs:308:13:308:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:308:17:308:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:310:9:310:12 | [post] access to local variable list : List [element, property Key] : A | semmle.label | [post] access to local variable list : List [element, property Key] : A | +| CollectionFlow.cs:310:18:310:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | semmle.label | object creation of type KeyValuePair : KeyValuePair [property Key] : A | +| CollectionFlow.cs:310:43:310:43 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:311:9:311:12 | access to local variable list : List [element, property Key] : A | semmle.label | access to local variable list : List [element, property Key] : A | +| CollectionFlow.cs:311:21:311:23 | kvp : KeyValuePair [property Key] : A | semmle.label | kvp : KeyValuePair [property Key] : A | +| CollectionFlow.cs:313:18:313:20 | access to parameter kvp : KeyValuePair [property Key] : A | semmle.label | access to parameter kvp : KeyValuePair [property Key] : A | +| CollectionFlow.cs:313:18:313:24 | access to property Key | semmle.label | access to property Key | +| CollectionFlow.cs:330:23:330:27 | array [Return] : A[] [element] : A | semmle.label | array [Return] : A[] [element] : A | +| CollectionFlow.cs:330:32:330:38 | element : A | semmle.label | element : A | +| CollectionFlow.cs:330:44:330:48 | [post] access to parameter array : A[] [element] : A | semmle.label | [post] access to parameter array : A[] [element] : A | +| CollectionFlow.cs:330:55:330:61 | access to parameter element : A | semmle.label | access to parameter element : A | +| CollectionFlow.cs:334:13:334:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:334:17:334:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | semmle.label | [post] access to local variable as : A[] [element] : A | +| CollectionFlow.cs:336:23:336:23 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:337:14:337:16 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:337:14:337:19 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:338:18:338:20 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:339:14:339:23 | call to method First | semmle.label | call to method First | +| CollectionFlow.cs:339:20:339:22 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A | +| CollectionFlow.cs:352:26:352:29 | list [Return] : List [element] : A | semmle.label | list [Return] : List [element] : A | +| CollectionFlow.cs:352:34:352:40 | element : A | semmle.label | element : A | +| CollectionFlow.cs:352:46:352:49 | [post] access to parameter list : List [element] : A | semmle.label | [post] access to parameter list : List [element] : A | +| CollectionFlow.cs:352:55:352:61 | access to parameter element : A | semmle.label | access to parameter element : A | +| CollectionFlow.cs:356:13:356:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:356:17:356:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | semmle.label | [post] access to local variable list : List [element] : A | +| CollectionFlow.cs:358:23:358:23 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:359:14:359:17 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:359:14:359:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:360:22:360:25 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:361:14:361:28 | call to method ListFirst | semmle.label | call to method ListFirst | +| CollectionFlow.cs:361:24:361:27 | access to local variable list : List [element] : A | semmle.label | access to local variable list : List [element] : A | +| CollectionFlow.cs:375:20:375:26 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:376:26:376:32 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:377:26:377:32 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:378:20:378:38 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | +| CollectionFlow.cs:378:28:378:38 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:378:30:378:36 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:391:30:391:36 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:392:36:392:42 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:393:36:393:42 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:394:30:394:38 | [...] : IEnumerable [element] : A | semmle.label | [...] : IEnumerable [element] : A | +| CollectionFlow.cs:394:31:394:37 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:416:13:416:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:416:17:416:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:418:9:418:13 | [post] access to local variable array : MyInlineArray [element] : A | semmle.label | [post] access to local variable array : MyInlineArray [element] : A | +| CollectionFlow.cs:418:20:418:20 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:419:14:419:18 | access to local variable array : MyInlineArray [element] : A | semmle.label | access to local variable array : MyInlineArray [element] : A | +| CollectionFlow.cs:419:14:419:21 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:437:13:437:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:437:17:437:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:438:13:438:17 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | +| CollectionFlow.cs:438:21:438:23 | [...] : A[] [element] : A | semmle.label | [...] : A[] [element] : A | +| CollectionFlow.cs:438:22:438:22 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:439:14:439:18 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | +| CollectionFlow.cs:439:14:439:21 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:444:13:444:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:444:17:444:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:445:17:445:17 | access to local variable l : List [element] : A | semmle.label | access to local variable l : List [element] : A | +| CollectionFlow.cs:445:21:445:23 | [...] : List [element] : A | semmle.label | [...] : List [element] : A | +| CollectionFlow.cs:445:22:445:22 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:446:14:446:14 | access to local variable l : List [element] : A | semmle.label | access to local variable l : List [element] : A | +| CollectionFlow.cs:446:14:446:17 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:457:13:457:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:457:17:457:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:458:13:458:16 | access to local variable temp : A[] [element] : A | semmle.label | access to local variable temp : A[] [element] : A | +| CollectionFlow.cs:458:20:458:22 | [...] : A[] [element] : A | semmle.label | [...] : A[] [element] : A | +| CollectionFlow.cs:458:21:458:21 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:459:13:459:17 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | +| CollectionFlow.cs:459:22:459:28 | .. access to local variable temp : A[] [element] : A | semmle.label | .. access to local variable temp : A[] [element] : A | +| CollectionFlow.cs:460:14:460:18 | access to local variable array : A[] [element] : A | semmle.label | access to local variable array : A[] [element] : A | +| CollectionFlow.cs:460:14:460:21 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:497:13:497:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:497:17:497:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:498:17:498:20 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | +| CollectionFlow.cs:498:24:498:41 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | +| CollectionFlow.cs:498:40:498:40 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:499:14:499:17 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | +| CollectionFlow.cs:499:14:499:20 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:504:13:504:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:504:17:504:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:505:17:505:20 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | +| CollectionFlow.cs:505:24:505:41 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | +| CollectionFlow.cs:505:40:505:40 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:506:13:506:15 | access to local variable arr : T[] [element] : A | semmle.label | access to local variable arr : T[] [element] : A | +| CollectionFlow.cs:506:19:506:22 | access to local variable span : Span [element] : A | semmle.label | access to local variable span : Span [element] : A | +| CollectionFlow.cs:506:19:506:32 | call to method ToArray : T[] [element] : A | semmle.label | call to method ToArray : T[] [element] : A | +| CollectionFlow.cs:507:14:507:16 | access to local variable arr : T[] [element] : A | semmle.label | access to local variable arr : T[] [element] : A | +| CollectionFlow.cs:507:14:507:19 | access to array element | semmle.label | access to array element | +| CollectionFlow.cs:512:13:512:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:512:17:512:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:513:9:513:14 | [post] access to parameter target : Span [element] : A | semmle.label | [post] access to parameter target : Span [element] : A | +| CollectionFlow.cs:513:21:513:21 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:514:14:514:19 | access to parameter target : Span [element] : A | semmle.label | access to parameter target : Span [element] : A | +| CollectionFlow.cs:514:14:514:22 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:519:13:519:18 | access to local variable source : Span [element] : A | semmle.label | access to local variable source : Span [element] : A | +| CollectionFlow.cs:519:22:519:51 | object creation of type Span : Span [element] : A | semmle.label | object creation of type Span : Span [element] : A | +| CollectionFlow.cs:519:34:519:50 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | +| CollectionFlow.cs:519:40:519:50 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:519:42:519:48 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:520:9:520:14 | access to local variable source : Span [element] : A | semmle.label | access to local variable source : Span [element] : A | +| CollectionFlow.cs:520:23:520:28 | [post] access to parameter target : Span [element] : A | semmle.label | [post] access to parameter target : Span [element] : A | +| CollectionFlow.cs:521:14:521:19 | access to parameter target : Span [element] : A | semmle.label | access to parameter target : Span [element] : A | +| CollectionFlow.cs:521:14:521:22 | access to indexer | semmle.label | access to indexer | +| CollectionFlow.cs:526:13:526:13 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:526:17:526:23 | object creation of type A : A | semmle.label | object creation of type A : A | +| CollectionFlow.cs:527:25:527:28 | access to local variable span : ReadOnlySpan [element] : A | semmle.label | access to local variable span : ReadOnlySpan [element] : A | +| CollectionFlow.cs:527:32:527:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | semmle.label | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | +| CollectionFlow.cs:527:52:527:62 | array creation of type A[] : null [element] : A | semmle.label | array creation of type A[] : null [element] : A | +| CollectionFlow.cs:527:58:527:62 | { ..., ... } : null [element] : A | semmle.label | { ..., ... } : null [element] : A | +| CollectionFlow.cs:527:60:527:60 | access to local variable a : A | semmle.label | access to local variable a : A | +| CollectionFlow.cs:528:14:528:17 | access to local variable span : ReadOnlySpan [element] : A | semmle.label | access to local variable span : ReadOnlySpan [element] : A | +| CollectionFlow.cs:528:14:528:20 | access to indexer | semmle.label | access to indexer | subpaths -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:44:14:44:23 | call to method First | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:62:14:62:24 | call to method First | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:81:14:81:23 | call to method First | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:337:14:337:23 | call to method First | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:26:350:29 | list [Return] : List [element] : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | +| CollectionFlow.cs:46:20:46:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:46:14:46:23 | call to method First | +| CollectionFlow.cs:64:20:64:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:64:14:64:24 | call to method First | +| CollectionFlow.cs:83:20:83:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:83:14:83:23 | call to method First | +| CollectionFlow.cs:103:24:103:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:103:14:103:28 | call to method ListFirst | +| CollectionFlow.cs:121:24:121:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:121:14:121:28 | call to method ListFirst | +| CollectionFlow.cs:139:24:139:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:139:14:139:28 | call to method ListFirst | +| CollectionFlow.cs:158:28:158:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:158:14:158:32 | call to method DictIndexZero | +| CollectionFlow.cs:159:29:159:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:159:14:159:33 | call to method DictFirstValue | +| CollectionFlow.cs:160:30:160:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | +| CollectionFlow.cs:180:28:180:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:180:14:180:32 | call to method DictIndexZero | +| CollectionFlow.cs:181:29:181:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:181:14:181:33 | call to method DictFirstValue | +| CollectionFlow.cs:182:30:182:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | +| CollectionFlow.cs:201:28:201:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:201:14:201:32 | call to method DictIndexZero | +| CollectionFlow.cs:202:29:202:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:202:14:202:33 | call to method DictFirstValue | +| CollectionFlow.cs:203:30:203:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | +| CollectionFlow.cs:223:28:223:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | +| CollectionFlow.cs:224:27:224:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:224:14:224:31 | call to method DictFirstKey | +| CollectionFlow.cs:242:28:242:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | +| CollectionFlow.cs:243:27:243:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:243:14:243:31 | call to method DictFirstKey | +| CollectionFlow.cs:336:23:336:23 | access to local variable a : A | CollectionFlow.cs:330:32:330:38 | element : A | CollectionFlow.cs:330:23:330:27 | array [Return] : A[] [element] : A | CollectionFlow.cs:336:18:336:20 | [post] access to local variable as : A[] [element] : A | +| CollectionFlow.cs:339:20:339:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:339:14:339:23 | call to method First | +| CollectionFlow.cs:358:23:358:23 | access to local variable a : A | CollectionFlow.cs:352:34:352:40 | element : A | CollectionFlow.cs:352:26:352:29 | list [Return] : List [element] : A | CollectionFlow.cs:358:17:358:20 | [post] access to local variable list : List [element] : A | +| CollectionFlow.cs:361:24:361:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:361:14:361:28 | call to method ListFirst | #select -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:42:14:42:19 | access to array element | $@ | CollectionFlow.cs:42:14:42:19 | access to array element | access to array element | -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:44:14:44:23 | call to method First | $@ | CollectionFlow.cs:44:14:44:23 | call to method First | call to method First | -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:60:14:60:20 | access to array element | $@ | CollectionFlow.cs:60:14:60:20 | access to array element | access to array element | -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:62:14:62:24 | call to method First | $@ | CollectionFlow.cs:62:14:62:24 | call to method First | call to method First | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:79:14:79:19 | access to array element | $@ | CollectionFlow.cs:79:14:79:19 | access to array element | access to array element | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:81:14:81:23 | call to method First | $@ | CollectionFlow.cs:81:14:81:23 | call to method First | call to method First | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:99:14:99:20 | access to indexer | $@ | CollectionFlow.cs:99:14:99:20 | access to indexer | access to indexer | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | $@ | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | call to method ListFirst | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:117:14:117:20 | access to indexer | $@ | CollectionFlow.cs:117:14:117:20 | access to indexer | access to indexer | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | $@ | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | call to method ListFirst | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:135:14:135:20 | access to indexer | $@ | CollectionFlow.cs:135:14:135:20 | access to indexer | access to indexer | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | $@ | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | call to method ListFirst | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:154:14:154:20 | access to indexer | $@ | CollectionFlow.cs:154:14:154:20 | access to indexer | access to indexer | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | call to method DictIndexZero | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | call to method DictFirstValue | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | call to method DictValuesFirst | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:176:14:176:20 | access to indexer | $@ | CollectionFlow.cs:176:14:176:20 | access to indexer | access to indexer | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | call to method DictIndexZero | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | call to method DictFirstValue | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | call to method DictValuesFirst | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:197:14:197:20 | access to indexer | $@ | CollectionFlow.cs:197:14:197:20 | access to indexer | access to indexer | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | call to method DictIndexZero | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | call to method DictFirstValue | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | call to method DictValuesFirst | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:20:73:20:89 | call to method First | $@ | CollectionFlow.cs:20:73:20:89 | call to method First | call to method First | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:219:14:219:30 | call to method First | $@ | CollectionFlow.cs:219:14:219:30 | call to method First | call to method First | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | $@ | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | call to method DictKeysFirst | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | $@ | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | call to method DictFirstKey | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:20:73:20:89 | call to method First | $@ | CollectionFlow.cs:20:73:20:89 | call to method First | call to method First | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:238:14:238:30 | call to method First | $@ | CollectionFlow.cs:238:14:238:30 | call to method First | call to method First | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | $@ | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | call to method DictKeysFirst | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | $@ | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | call to method DictFirstKey | -| CollectionFlow.cs:255:17:255:23 | object creation of type A : A | CollectionFlow.cs:255:17:255:23 | object creation of type A : A | CollectionFlow.cs:258:18:258:18 | access to local variable x | $@ | CollectionFlow.cs:258:18:258:18 | access to local variable x | access to local variable x | -| CollectionFlow.cs:270:17:270:23 | object creation of type A : A | CollectionFlow.cs:270:17:270:23 | object creation of type A : A | CollectionFlow.cs:274:18:274:35 | access to property Current | $@ | CollectionFlow.cs:274:18:274:35 | access to property Current | access to property Current | -| CollectionFlow.cs:287:17:287:23 | object creation of type A : A | CollectionFlow.cs:287:17:287:23 | object creation of type A : A | CollectionFlow.cs:292:18:292:35 | access to property Current | $@ | CollectionFlow.cs:292:18:292:35 | access to property Current | access to property Current | -| CollectionFlow.cs:306:17:306:23 | object creation of type A : A | CollectionFlow.cs:306:17:306:23 | object creation of type A : A | CollectionFlow.cs:311:18:311:24 | access to property Key | $@ | CollectionFlow.cs:311:18:311:24 | access to property Key | access to property Key | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:335:14:335:19 | access to array element | $@ | CollectionFlow.cs:335:14:335:19 | access to array element | access to array element | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:337:14:337:23 | call to method First | $@ | CollectionFlow.cs:337:14:337:23 | call to method First | call to method First | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:357:14:357:20 | access to indexer | $@ | CollectionFlow.cs:357:14:357:20 | access to indexer | access to indexer | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | $@ | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | call to method ListFirst | -| CollectionFlow.cs:373:20:373:26 | object creation of type A : A | CollectionFlow.cs:373:20:373:26 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | -| CollectionFlow.cs:374:26:374:32 | object creation of type A : A | CollectionFlow.cs:374:26:374:32 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | -| CollectionFlow.cs:375:26:375:32 | object creation of type A : A | CollectionFlow.cs:375:26:375:32 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | -| CollectionFlow.cs:376:30:376:36 | object creation of type A : A | CollectionFlow.cs:376:30:376:36 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | -| CollectionFlow.cs:406:17:406:23 | object creation of type A : A | CollectionFlow.cs:406:17:406:23 | object creation of type A : A | CollectionFlow.cs:409:14:409:21 | access to array element | $@ | CollectionFlow.cs:409:14:409:21 | access to array element | access to array element | -| CollectionFlow.cs:427:17:427:23 | object creation of type A : A | CollectionFlow.cs:427:17:427:23 | object creation of type A : A | CollectionFlow.cs:429:14:429:21 | access to array element | $@ | CollectionFlow.cs:429:14:429:21 | access to array element | access to array element | -| CollectionFlow.cs:434:17:434:23 | object creation of type A : A | CollectionFlow.cs:434:17:434:23 | object creation of type A : A | CollectionFlow.cs:436:14:436:17 | access to indexer | $@ | CollectionFlow.cs:436:14:436:17 | access to indexer | access to indexer | -| CollectionFlow.cs:447:17:447:23 | object creation of type A : A | CollectionFlow.cs:447:17:447:23 | object creation of type A : A | CollectionFlow.cs:450:14:450:21 | access to array element | $@ | CollectionFlow.cs:450:14:450:21 | access to array element | access to array element | -| CollectionFlow.cs:487:17:487:23 | object creation of type A : A | CollectionFlow.cs:487:17:487:23 | object creation of type A : A | CollectionFlow.cs:489:14:489:20 | access to indexer | $@ | CollectionFlow.cs:489:14:489:20 | access to indexer | access to indexer | -| CollectionFlow.cs:494:17:494:23 | object creation of type A : A | CollectionFlow.cs:494:17:494:23 | object creation of type A : A | CollectionFlow.cs:497:14:497:19 | access to array element | $@ | CollectionFlow.cs:497:14:497:19 | access to array element | access to array element | -| CollectionFlow.cs:502:17:502:23 | object creation of type A : A | CollectionFlow.cs:502:17:502:23 | object creation of type A : A | CollectionFlow.cs:504:14:504:22 | access to indexer | $@ | CollectionFlow.cs:504:14:504:22 | access to indexer | access to indexer | -| CollectionFlow.cs:509:42:509:48 | object creation of type A : A | CollectionFlow.cs:509:42:509:48 | object creation of type A : A | CollectionFlow.cs:511:14:511:22 | access to indexer | $@ | CollectionFlow.cs:511:14:511:22 | access to indexer | access to indexer | -| CollectionFlow.cs:516:17:516:23 | object creation of type A : A | CollectionFlow.cs:516:17:516:23 | object creation of type A : A | CollectionFlow.cs:518:14:518:20 | access to indexer | $@ | CollectionFlow.cs:518:14:518:20 | access to indexer | access to indexer | +| CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | +| CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:44:14:44:19 | access to array element | $@ | CollectionFlow.cs:44:14:44:19 | access to array element | access to array element | +| CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:42:17:42:23 | object creation of type A : A | CollectionFlow.cs:46:14:46:23 | call to method First | $@ | CollectionFlow.cs:46:14:46:23 | call to method First | call to method First | +| CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | +| CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:62:14:62:20 | access to array element | $@ | CollectionFlow.cs:62:14:62:20 | access to array element | access to array element | +| CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:60:17:60:23 | object creation of type A : A | CollectionFlow.cs:64:14:64:24 | call to method First | $@ | CollectionFlow.cs:64:14:64:24 | call to method First | call to method First | +| CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | +| CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:81:14:81:19 | access to array element | $@ | CollectionFlow.cs:81:14:81:19 | access to array element | access to array element | +| CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:78:17:78:23 | object creation of type A : A | CollectionFlow.cs:83:14:83:23 | call to method First | $@ | CollectionFlow.cs:83:14:83:23 | call to method First | call to method First | +| CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | +| CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:101:14:101:20 | access to indexer | $@ | CollectionFlow.cs:101:14:101:20 | access to indexer | access to indexer | +| CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:98:17:98:23 | object creation of type A : A | CollectionFlow.cs:103:14:103:28 | call to method ListFirst | $@ | CollectionFlow.cs:103:14:103:28 | call to method ListFirst | call to method ListFirst | +| CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | +| CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:119:14:119:20 | access to indexer | $@ | CollectionFlow.cs:119:14:119:20 | access to indexer | access to indexer | +| CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:117:17:117:23 | object creation of type A : A | CollectionFlow.cs:121:14:121:28 | call to method ListFirst | $@ | CollectionFlow.cs:121:14:121:28 | call to method ListFirst | call to method ListFirst | +| CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | +| CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:137:14:137:20 | access to indexer | $@ | CollectionFlow.cs:137:14:137:20 | access to indexer | access to indexer | +| CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:134:17:134:23 | object creation of type A : A | CollectionFlow.cs:139:14:139:28 | call to method ListFirst | $@ | CollectionFlow.cs:139:14:139:28 | call to method ListFirst | call to method ListFirst | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:156:14:156:20 | access to indexer | $@ | CollectionFlow.cs:156:14:156:20 | access to indexer | access to indexer | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:158:14:158:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:158:14:158:32 | call to method DictIndexZero | call to method DictIndexZero | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:159:14:159:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:159:14:159:33 | call to method DictFirstValue | call to method DictFirstValue | +| CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:153:17:153:23 | object creation of type A : A | CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:160:14:160:34 | call to method DictValuesFirst | call to method DictValuesFirst | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:178:14:178:20 | access to indexer | $@ | CollectionFlow.cs:178:14:178:20 | access to indexer | access to indexer | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:180:14:180:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:180:14:180:32 | call to method DictIndexZero | call to method DictIndexZero | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:181:14:181:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:181:14:181:33 | call to method DictFirstValue | call to method DictFirstValue | +| CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:176:17:176:23 | object creation of type A : A | CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:182:14:182:34 | call to method DictValuesFirst | call to method DictValuesFirst | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:18:75:18:81 | access to indexer | $@ | CollectionFlow.cs:18:75:18:81 | access to indexer | access to indexer | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:199:14:199:20 | access to indexer | $@ | CollectionFlow.cs:199:14:199:20 | access to indexer | access to indexer | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:201:14:201:32 | call to method DictIndexZero | $@ | CollectionFlow.cs:201:14:201:32 | call to method DictIndexZero | call to method DictIndexZero | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:202:14:202:33 | call to method DictFirstValue | $@ | CollectionFlow.cs:202:14:202:33 | call to method DictFirstValue | call to method DictFirstValue | +| CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:197:17:197:23 | object creation of type A : A | CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | $@ | CollectionFlow.cs:203:14:203:34 | call to method DictValuesFirst | call to method DictValuesFirst | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:20:73:20:89 | call to method First | $@ | CollectionFlow.cs:20:73:20:89 | call to method First | call to method First | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:221:14:221:30 | call to method First | $@ | CollectionFlow.cs:221:14:221:30 | call to method First | call to method First | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | $@ | CollectionFlow.cs:223:14:223:32 | call to method DictKeysFirst | call to method DictKeysFirst | +| CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:219:17:219:23 | object creation of type A : A | CollectionFlow.cs:224:14:224:31 | call to method DictFirstKey | $@ | CollectionFlow.cs:224:14:224:31 | call to method DictFirstKey | call to method DictFirstKey | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:20:73:20:89 | call to method First | $@ | CollectionFlow.cs:20:73:20:89 | call to method First | call to method First | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:240:14:240:30 | call to method First | $@ | CollectionFlow.cs:240:14:240:30 | call to method First | call to method First | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | $@ | CollectionFlow.cs:242:14:242:32 | call to method DictKeysFirst | call to method DictKeysFirst | +| CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:238:17:238:23 | object creation of type A : A | CollectionFlow.cs:243:14:243:31 | call to method DictFirstKey | $@ | CollectionFlow.cs:243:14:243:31 | call to method DictFirstKey | call to method DictFirstKey | +| CollectionFlow.cs:257:17:257:23 | object creation of type A : A | CollectionFlow.cs:257:17:257:23 | object creation of type A : A | CollectionFlow.cs:260:18:260:18 | access to local variable x | $@ | CollectionFlow.cs:260:18:260:18 | access to local variable x | access to local variable x | +| CollectionFlow.cs:272:17:272:23 | object creation of type A : A | CollectionFlow.cs:272:17:272:23 | object creation of type A : A | CollectionFlow.cs:276:18:276:35 | access to property Current | $@ | CollectionFlow.cs:276:18:276:35 | access to property Current | access to property Current | +| CollectionFlow.cs:289:17:289:23 | object creation of type A : A | CollectionFlow.cs:289:17:289:23 | object creation of type A : A | CollectionFlow.cs:294:18:294:35 | access to property Current | $@ | CollectionFlow.cs:294:18:294:35 | access to property Current | access to property Current | +| CollectionFlow.cs:308:17:308:23 | object creation of type A : A | CollectionFlow.cs:308:17:308:23 | object creation of type A : A | CollectionFlow.cs:313:18:313:24 | access to property Key | $@ | CollectionFlow.cs:313:18:313:24 | access to property Key | access to property Key | +| CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element | +| CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:337:14:337:19 | access to array element | $@ | CollectionFlow.cs:337:14:337:19 | access to array element | access to array element | +| CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:334:17:334:23 | object creation of type A : A | CollectionFlow.cs:339:14:339:23 | call to method First | $@ | CollectionFlow.cs:339:14:339:23 | call to method First | call to method First | +| CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:16:63:16:69 | access to indexer | $@ | CollectionFlow.cs:16:63:16:69 | access to indexer | access to indexer | +| CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:359:14:359:20 | access to indexer | $@ | CollectionFlow.cs:359:14:359:20 | access to indexer | access to indexer | +| CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:356:17:356:23 | object creation of type A : A | CollectionFlow.cs:361:14:361:28 | call to method ListFirst | $@ | CollectionFlow.cs:361:14:361:28 | call to method ListFirst | call to method ListFirst | +| CollectionFlow.cs:375:20:375:26 | object creation of type A : A | CollectionFlow.cs:375:20:375:26 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | +| CollectionFlow.cs:376:26:376:32 | object creation of type A : A | CollectionFlow.cs:376:26:376:32 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | +| CollectionFlow.cs:377:26:377:32 | object creation of type A : A | CollectionFlow.cs:377:26:377:32 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | +| CollectionFlow.cs:378:30:378:36 | object creation of type A : A | CollectionFlow.cs:378:30:378:36 | object creation of type A : A | CollectionFlow.cs:36:63:36:69 | access to array element | $@ | CollectionFlow.cs:36:63:36:69 | access to array element | access to array element | +| CollectionFlow.cs:391:30:391:36 | object creation of type A : A | CollectionFlow.cs:391:30:391:36 | object creation of type A : A | CollectionFlow.cs:38:84:38:95 | call to method First | $@ | CollectionFlow.cs:38:84:38:95 | call to method First | call to method First | +| CollectionFlow.cs:392:36:392:42 | object creation of type A : A | CollectionFlow.cs:392:36:392:42 | object creation of type A : A | CollectionFlow.cs:38:84:38:95 | call to method First | $@ | CollectionFlow.cs:38:84:38:95 | call to method First | call to method First | +| CollectionFlow.cs:393:36:393:42 | object creation of type A : A | CollectionFlow.cs:393:36:393:42 | object creation of type A : A | CollectionFlow.cs:38:84:38:95 | call to method First | $@ | CollectionFlow.cs:38:84:38:95 | call to method First | call to method First | +| CollectionFlow.cs:394:31:394:37 | object creation of type A : A | CollectionFlow.cs:394:31:394:37 | object creation of type A : A | CollectionFlow.cs:38:84:38:95 | call to method First | $@ | CollectionFlow.cs:38:84:38:95 | call to method First | call to method First | +| CollectionFlow.cs:416:17:416:23 | object creation of type A : A | CollectionFlow.cs:416:17:416:23 | object creation of type A : A | CollectionFlow.cs:419:14:419:21 | access to array element | $@ | CollectionFlow.cs:419:14:419:21 | access to array element | access to array element | +| CollectionFlow.cs:437:17:437:23 | object creation of type A : A | CollectionFlow.cs:437:17:437:23 | object creation of type A : A | CollectionFlow.cs:439:14:439:21 | access to array element | $@ | CollectionFlow.cs:439:14:439:21 | access to array element | access to array element | +| CollectionFlow.cs:444:17:444:23 | object creation of type A : A | CollectionFlow.cs:444:17:444:23 | object creation of type A : A | CollectionFlow.cs:446:14:446:17 | access to indexer | $@ | CollectionFlow.cs:446:14:446:17 | access to indexer | access to indexer | +| CollectionFlow.cs:457:17:457:23 | object creation of type A : A | CollectionFlow.cs:457:17:457:23 | object creation of type A : A | CollectionFlow.cs:460:14:460:21 | access to array element | $@ | CollectionFlow.cs:460:14:460:21 | access to array element | access to array element | +| CollectionFlow.cs:497:17:497:23 | object creation of type A : A | CollectionFlow.cs:497:17:497:23 | object creation of type A : A | CollectionFlow.cs:499:14:499:20 | access to indexer | $@ | CollectionFlow.cs:499:14:499:20 | access to indexer | access to indexer | +| CollectionFlow.cs:504:17:504:23 | object creation of type A : A | CollectionFlow.cs:504:17:504:23 | object creation of type A : A | CollectionFlow.cs:507:14:507:19 | access to array element | $@ | CollectionFlow.cs:507:14:507:19 | access to array element | access to array element | +| CollectionFlow.cs:512:17:512:23 | object creation of type A : A | CollectionFlow.cs:512:17:512:23 | object creation of type A : A | CollectionFlow.cs:514:14:514:22 | access to indexer | $@ | CollectionFlow.cs:514:14:514:22 | access to indexer | access to indexer | +| CollectionFlow.cs:519:42:519:48 | object creation of type A : A | CollectionFlow.cs:519:42:519:48 | object creation of type A : A | CollectionFlow.cs:521:14:521:22 | access to indexer | $@ | CollectionFlow.cs:521:14:521:22 | access to indexer | access to indexer | +| CollectionFlow.cs:526:17:526:23 | object creation of type A : A | CollectionFlow.cs:526:17:526:23 | object creation of type A : A | CollectionFlow.cs:528:14:528:20 | access to indexer | $@ | CollectionFlow.cs:528:14:528:20 | access to indexer | access to indexer | diff --git a/csharp/ql/test/library-tests/dispatch/CallContext.expected b/csharp/ql/test/library-tests/dispatch/CallContext.expected index d51ec5138294..7234249cbff1 100644 --- a/csharp/ql/test/library-tests/dispatch/CallContext.expected +++ b/csharp/ql/test/library-tests/dispatch/CallContext.expected @@ -17,12 +17,12 @@ mayBenefitFromCallContext | ViableCallable.cs:26:27:26:41 | access to indexer | | ViableCallable.cs:28:9:28:16 | access to event Event | | ViableCallable.cs:29:9:29:16 | access to event Event | -| ViableCallable.cs:234:9:234:15 | call to method M | -| ViableCallable.cs:283:9:283:15 | call to method M | -| ViableCallable.cs:286:9:286:20 | call to method M | -| ViableCallable.cs:411:9:411:18 | call to method M | -| ViableCallable.cs:455:9:455:30 | call to method M2 | -| ViableCallable.cs:461:9:461:30 | call to method M2 | -| ViableCallable.cs:563:18:563:22 | call to operator / | -| ViableCallable.cs:566:26:566:30 | call to operator checked / | -| ViableCallable.cs:572:9:572:15 | call to method M12 | +| ViableCallable.cs:244:9:244:15 | call to method M | +| ViableCallable.cs:293:9:293:15 | call to method M | +| ViableCallable.cs:296:9:296:20 | call to method M | +| ViableCallable.cs:424:9:424:18 | call to method M | +| ViableCallable.cs:468:9:468:30 | call to method M2 | +| ViableCallable.cs:474:9:474:30 | call to method M2 | +| ViableCallable.cs:576:18:576:22 | call to operator / | +| ViableCallable.cs:579:26:579:30 | call to operator checked / | +| ViableCallable.cs:585:9:585:15 | call to method M12 | diff --git a/csharp/ql/test/library-tests/dispatch/CallGraph.expected b/csharp/ql/test/library-tests/dispatch/CallGraph.expected index 41d210039965..e8087b773612 100644 --- a/csharp/ql/test/library-tests/dispatch/CallGraph.expected +++ b/csharp/ql/test/library-tests/dispatch/CallGraph.expected @@ -30,229 +30,232 @@ | TypeFlow.cs:24:10:24:12 | Run | TypeFlow.cs:22:15:22:17 | get_Prop | | ViableCallable.cs:9:17:9:31 | Run`3 | ExactCallable.cs:128:25:128:26 | M3 | | ViableCallable.cs:9:17:9:31 | Run`3 | ExactCallable.cs:147:29:147:30 | M3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock>> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock>> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:202:21:202:27 | Mock> | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:35:241:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:35:241:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:35:241:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:35:241:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:40:241:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:40:241:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:40:241:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:241:40:241:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:40:242:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:40:242:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:40:242:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:40:242:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:71:242:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:71:242:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:71:242:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:242:71:242:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:56:243:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:56:243:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:56:243:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:56:243:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:64:243:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:64:243:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:64:243:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:243:64:243:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:248:29:248:33 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:249:35:249:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:249:40:249:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:46:250:48 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:77:250:79 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:56:251:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:64:251:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:256:26:256:30 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:256:26:256:30 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:257:32:257:34 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:257:32:257:34 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:257:37:257:39 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:257:37:257:39 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:258:40:258:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:258:40:258:42 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:258:71:258:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:258:71:258:73 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:53:259:55 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:53:259:55 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:61:259:66 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:61:259:66 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:264:26:264:30 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:265:24:265:24 | M | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:266:35:266:37 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:266:40:266:42 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:267:39:267:41 | set_Prop2 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:43:268:45 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:74:268:76 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:56:269:58 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:64:269:69 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:270:55:270:57 | add_Event2 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:270:63:270:68 | remove_Event2 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:31:276:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:36:276:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:37:277:39 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:68:277:70 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:52:278:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:60:278:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:293:31:293:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:293:31:293:33 | get_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:293:36:293:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:293:36:293:38 | set_Prop | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:294:39:294:41 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:294:39:294:41 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:294:70:294:72 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:294:70:294:72 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:295:52:295:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:295:52:295:54 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:295:60:295:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:295:60:295:65 | remove_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:312:25:312:25 | M | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:313:24:313:28 | M2 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:313:24:313:28 | M2 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:314:17:314:18 | M3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:315:17:315:18 | M4 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:325:26:325:26 | M | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:326:17:326:18 | M3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:335:17:335:18 | M3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:336:32:336:32 | + | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:338:34:338:36 | get_Prop3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:338:39:338:41 | set_Prop3 | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:339:31:339:33 | get_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:339:53:339:55 | set_Item | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:340:45:340:47 | add_Event | -| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:340:53:340:58 | remove_Event | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:240:23:240:27 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:248:29:248:33 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:256:26:256:30 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:256:26:256:30 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:264:26:264:30 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:231:17:231:19 | Run | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:280:17:280:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:280:17:280:19 | Run | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:280:17:280:19 | Run | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:297:17:297:19 | Run | ViableCallable.cs:275:24:275:28 | M`1 | -| ViableCallable.cs:297:17:297:19 | Run | ViableCallable.cs:292:26:292:30 | M`1 | -| ViableCallable.cs:347:17:347:19 | Run | ViableCallable.cs:345:10:345:10 | M | -| ViableCallable.cs:347:17:347:19 | Run | ViableCallable.cs:361:5:361:7 | C11 | -| ViableCallable.cs:375:10:375:16 | Run`1 | ViableCallable.cs:371:33:371:33 | M | -| ViableCallable.cs:381:10:381:17 | Run2`1 | ViableCallable.cs:375:10:375:16 | Run | -| ViableCallable.cs:386:10:386:13 | Run3 | ViableCallable.cs:381:10:381:17 | Run2 | -| ViableCallable.cs:408:10:408:12 | Run | ViableCallable.cs:202:21:202:27 | Mock | -| ViableCallable.cs:408:10:408:12 | Run | ViableCallable.cs:396:36:396:40 | M`1 | -| ViableCallable.cs:408:10:408:12 | Run | ViableCallable.cs:402:53:402:57 | M`1 | -| ViableCallable.cs:408:10:408:12 | Run | ViableCallable.cs:404:42:404:46 | M`1 | -| ViableCallable.cs:430:22:430:26 | M2`1 | ViableCallable.cs:455:14:455:29 | (...) => ... | -| ViableCallable.cs:430:22:430:26 | M2`1 | ViableCallable.cs:461:14:461:29 | (...) => ... | -| ViableCallable.cs:435:10:435:11 | M1 | ViableCallable.cs:429:23:429:24 | M1 | -| ViableCallable.cs:435:10:435:11 | M1 | ViableCallable.cs:444:23:444:27 | M2`1 | -| ViableCallable.cs:444:23:444:27 | M2`1 | ViableCallable.cs:441:17:441:23 | (...) => ... | -| ViableCallable.cs:444:23:444:27 | M2`1 | ViableCallable.cs:449:14:449:20 | (...) => ... | -| ViableCallable.cs:444:23:444:27 | M2`1 | ViableCallable.cs:455:14:455:29 | (...) => ... | -| ViableCallable.cs:444:23:444:27 | M2`1 | ViableCallable.cs:461:14:461:29 | (...) => ... | -| ViableCallable.cs:446:10:446:14 | M3`1 | ViableCallable.cs:444:23:444:27 | M2`1 | -| ViableCallable.cs:452:10:452:14 | M4`1 | ViableCallable.cs:430:22:430:26 | M2`1 | -| ViableCallable.cs:452:10:452:14 | M4`1 | ViableCallable.cs:444:23:444:27 | M2`1 | -| ViableCallable.cs:458:10:458:14 | M5`1 | ViableCallable.cs:430:22:430:26 | M2`1 | -| ViableCallable.cs:458:10:458:14 | M5`1 | ViableCallable.cs:444:23:444:27 | M2`1 | -| ViableCallable.cs:475:10:475:12 | Run | ViableCallable.cs:468:10:468:11 | M2 | -| ViableCallable.cs:475:10:475:12 | Run | ViableCallable.cs:473:17:473:18 | M1 | -| ViableCallable.cs:492:10:492:12 | Run | ViableCallable.cs:487:32:487:32 | + | -| ViableCallable.cs:492:10:492:12 | Run | ViableCallable.cs:488:40:488:40 | checked + | -| ViableCallable.cs:492:10:492:12 | Run | ViableCallable.cs:489:28:489:35 | explicit conversion | -| ViableCallable.cs:492:10:492:12 | Run | ViableCallable.cs:490:28:490:35 | checked explicit conversion | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:514:39:514:39 | checked - | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:516:31:516:31 | * | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:517:39:517:39 | checked * | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:519:31:519:31 | / | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:520:39:520:39 | checked / | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:524:18:524:20 | M12 | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:526:18:526:20 | M13 | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:531:32:531:32 | + | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:532:40:532:40 | checked + | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:534:32:534:32 | - | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:536:32:536:32 | / | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:537:40:537:40 | checked / | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:539:17:539:19 | M11 | -| ViableCallable.cs:542:10:542:15 | Run`1 | ViableCallable.cs:540:17:540:19 | M12 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock>> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock>> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:212:21:212:27 | Mock> | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:35:251:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:35:251:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:35:251:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:35:251:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:40:251:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:40:251:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:40:251:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:251:40:251:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:40:252:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:40:252:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:40:252:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:40:252:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:71:252:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:71:252:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:71:252:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:252:71:252:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:56:253:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:56:253:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:56:253:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:56:253:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:64:253:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:64:253:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:64:253:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:253:64:253:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:258:29:258:33 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:35:259:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:259:40:259:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:260:46:260:48 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:260:77:260:79 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:261:56:261:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:261:64:261:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:266:26:266:30 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:266:26:266:30 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:267:32:267:34 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:267:32:267:34 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:267:37:267:39 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:267:37:267:39 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:40:268:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:40:268:42 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:71:268:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:268:71:268:73 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:53:269:55 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:53:269:55 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:61:269:66 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:269:61:269:66 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:274:26:274:30 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:275:24:275:24 | M | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:35:276:37 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:276:40:276:42 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:277:39:277:41 | set_Prop2 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:43:278:45 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:278:74:278:76 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:279:56:279:58 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:279:64:279:69 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:280:55:280:57 | add_Event2 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:280:63:280:68 | remove_Event2 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:31:286:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:286:36:286:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:37:287:39 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:287:68:287:70 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:52:288:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:288:60:288:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:303:31:303:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:303:31:303:33 | get_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:303:36:303:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:303:36:303:38 | set_Prop | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:304:39:304:41 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:304:39:304:41 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:304:70:304:72 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:304:70:304:72 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:305:52:305:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:305:52:305:54 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:305:60:305:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:305:60:305:65 | remove_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:322:25:322:25 | M | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:323:24:323:28 | M2 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:323:24:323:28 | M2 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:324:17:324:18 | M3 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:325:17:325:18 | M4 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:326:17:326:18 | M5 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:336:26:336:26 | M | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:337:17:337:18 | M3 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:338:17:338:18 | M5 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:347:17:347:18 | M3 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:348:17:348:18 | M5 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:349:32:349:32 | + | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:351:34:351:36 | get_Prop3 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:351:39:351:41 | set_Prop3 | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:352:31:352:33 | get_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:352:53:352:55 | set_Item | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:353:45:353:47 | add_Event | +| ViableCallable.cs:9:17:9:31 | Run`3 | ViableCallable.cs:353:53:353:58 | remove_Event | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:250:23:250:27 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:258:29:258:33 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:266:26:266:30 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:266:26:266:30 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:274:26:274:30 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:241:17:241:19 | Run | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:290:17:290:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:290:17:290:19 | Run | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:290:17:290:19 | Run | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:307:17:307:19 | Run | ViableCallable.cs:285:24:285:28 | M`1 | +| ViableCallable.cs:307:17:307:19 | Run | ViableCallable.cs:302:26:302:30 | M`1 | +| ViableCallable.cs:360:17:360:19 | Run | ViableCallable.cs:358:10:358:10 | M | +| ViableCallable.cs:360:17:360:19 | Run | ViableCallable.cs:374:5:374:7 | C11 | +| ViableCallable.cs:388:10:388:16 | Run`1 | ViableCallable.cs:384:33:384:33 | M | +| ViableCallable.cs:394:10:394:17 | Run2`1 | ViableCallable.cs:388:10:388:16 | Run | +| ViableCallable.cs:399:10:399:13 | Run3 | ViableCallable.cs:394:10:394:17 | Run2 | +| ViableCallable.cs:421:10:421:12 | Run | ViableCallable.cs:212:21:212:27 | Mock | +| ViableCallable.cs:421:10:421:12 | Run | ViableCallable.cs:409:36:409:40 | M`1 | +| ViableCallable.cs:421:10:421:12 | Run | ViableCallable.cs:415:53:415:57 | M`1 | +| ViableCallable.cs:421:10:421:12 | Run | ViableCallable.cs:417:42:417:46 | M`1 | +| ViableCallable.cs:443:22:443:26 | M2`1 | ViableCallable.cs:468:14:468:29 | (...) => ... | +| ViableCallable.cs:443:22:443:26 | M2`1 | ViableCallable.cs:474:14:474:29 | (...) => ... | +| ViableCallable.cs:448:10:448:11 | M1 | ViableCallable.cs:442:23:442:24 | M1 | +| ViableCallable.cs:448:10:448:11 | M1 | ViableCallable.cs:457:23:457:27 | M2`1 | +| ViableCallable.cs:457:23:457:27 | M2`1 | ViableCallable.cs:454:17:454:23 | (...) => ... | +| ViableCallable.cs:457:23:457:27 | M2`1 | ViableCallable.cs:462:14:462:20 | (...) => ... | +| ViableCallable.cs:457:23:457:27 | M2`1 | ViableCallable.cs:468:14:468:29 | (...) => ... | +| ViableCallable.cs:457:23:457:27 | M2`1 | ViableCallable.cs:474:14:474:29 | (...) => ... | +| ViableCallable.cs:459:10:459:14 | M3`1 | ViableCallable.cs:457:23:457:27 | M2`1 | +| ViableCallable.cs:465:10:465:14 | M4`1 | ViableCallable.cs:443:22:443:26 | M2`1 | +| ViableCallable.cs:465:10:465:14 | M4`1 | ViableCallable.cs:457:23:457:27 | M2`1 | +| ViableCallable.cs:471:10:471:14 | M5`1 | ViableCallable.cs:443:22:443:26 | M2`1 | +| ViableCallable.cs:471:10:471:14 | M5`1 | ViableCallable.cs:457:23:457:27 | M2`1 | +| ViableCallable.cs:488:10:488:12 | Run | ViableCallable.cs:481:10:481:11 | M2 | +| ViableCallable.cs:488:10:488:12 | Run | ViableCallable.cs:486:17:486:18 | M1 | +| ViableCallable.cs:505:10:505:12 | Run | ViableCallable.cs:500:32:500:32 | + | +| ViableCallable.cs:505:10:505:12 | Run | ViableCallable.cs:501:40:501:40 | checked + | +| ViableCallable.cs:505:10:505:12 | Run | ViableCallable.cs:502:28:502:35 | explicit conversion | +| ViableCallable.cs:505:10:505:12 | Run | ViableCallable.cs:503:28:503:35 | checked explicit conversion | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:527:39:527:39 | checked - | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:529:31:529:31 | * | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:530:39:530:39 | checked * | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:532:31:532:31 | / | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:533:39:533:39 | checked / | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:537:18:537:20 | M12 | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:539:18:539:20 | M13 | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:544:32:544:32 | + | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:545:40:545:40 | checked + | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:547:32:547:32 | - | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:549:32:549:32 | / | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:550:40:550:40 | checked / | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:552:17:552:19 | M11 | +| ViableCallable.cs:555:10:555:15 | Run`1 | ViableCallable.cs:553:17:553:19 | M12 | diff --git a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected index 0370a47b8946..8849a785a1cb 100644 --- a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected +++ b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected @@ -332,160 +332,176 @@ | ViableCallable.cs:144:9:144:15 | dynamic call to method M3 | C9`1.M3(params T[]) | | ViableCallable.cs:145:9:145:20 | dynamic call to method M3 | C8.M3(params Double[]) | | ViableCallable.cs:145:9:145:20 | dynamic call to method M3 | C9`1.M3(params T[]) | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | C8.M3(params Double[]) | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | C9`1.M3(params T[]) | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | C10.M3(params Double[]) | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | Test.MainClass+ImplAlpha.M3() | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | Test.MainClass+SecondLevelImpl.M3() | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | C8.M3(params Double[]) | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | C9`1.M3(params T[]) | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | C10.M3(params Double[]) | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | C8.M3(params Double[]) | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | C9`1.M3(params T[]) | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | C10.M3(params Double[]) | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | C8.set_Prop1(string) | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | C9`1.set_Prop1(string) | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | C10.set_Prop1(bool) | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | C8.get_Prop1() | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | C9`1.get_Prop1() | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | C10.get_Prop1() | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C2.set_Item(decimal, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C2.set_Item(int, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C2`1.set_Item(T, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C3.set_Item(decimal, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C6.set_Item(byte, bool) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C6.set_Item(decimal, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C6.set_Item(int, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C6.set_Item(byte, T1) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C6`2.set_Item(T2, T1) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C7.set_Item(byte, bool) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C7`1.set_Item(byte, T1) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C8.set_Item(int, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C9`1.set_Item(int, string) | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | C10.set_Item(int, bool) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C2.get_Item(decimal) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C2.get_Item(int) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C2`1.get_Item(T) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C3.get_Item(decimal) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C6.get_Item(byte) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C6.get_Item(decimal) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C6.get_Item(int) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C6.get_Item(byte) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C6`2.get_Item(T2) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C7.get_Item(byte) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C7`1.get_Item(byte) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C8.get_Item(int) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C9`1.get_Item(int) | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | C10.get_Item(int) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C2`1.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C3.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C5.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C6`2.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C7`1.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C8.add_Event(EventHandler) | -| ViableCallable.cs:156:9:156:54 | ... += ... | C9`1.add_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C2`1.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C3.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C5.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C6`2.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C7`1.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C8.remove_Event(EventHandler) | -| ViableCallable.cs:157:9:157:54 | ... -= ... | C9`1.remove_Event(EventHandler) | -| ViableCallable.cs:160:9:160:40 | dynamic call to method M4 | C8.M4(byte, IEnumerable) | -| ViableCallable.cs:160:19:160:39 | call to method Mock> | ViableCallable.Mock>() | -| ViableCallable.cs:161:9:161:38 | dynamic call to method M4 | C8.M4(byte, IEnumerable) | -| ViableCallable.cs:164:9:164:17 | dynamic access to member Prop1 | C10.set_Prop1(bool) | -| ViableCallable.cs:174:9:174:15 | dynamic access to element | C2`1.set_Item(T, string) | -| ViableCallable.cs:174:9:174:15 | dynamic access to element | C6`2.set_Item(T2, T1) | -| ViableCallable.cs:174:19:174:25 | dynamic access to element | C2`1.get_Item(T) | -| ViableCallable.cs:174:19:174:25 | dynamic access to element | C6`2.get_Item(T2) | -| ViableCallable.cs:186:9:186:153 | call to method InvokeMember | C10.+(C10, C10) | -| ViableCallable.cs:189:9:189:143 | call to method InvokeMember | C10.get_Prop3() | -| ViableCallable.cs:190:9:190:149 | call to method InvokeMember | C10.set_Prop3(string) | -| ViableCallable.cs:193:9:193:146 | call to method InvokeMember | C10.get_Item(int) | -| ViableCallable.cs:194:9:194:152 | call to method InvokeMember | C10.set_Item(int, bool) | -| ViableCallable.cs:198:9:198:147 | call to method InvokeMember | C10.add_Event(EventHandler) | -| ViableCallable.cs:199:9:199:150 | call to method InvokeMember | C10.remove_Event(EventHandler) | -| ViableCallable.cs:234:9:234:15 | call to method M | C2.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C2.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C2.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C2`1.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C3.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C4.M(Int32[], T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C4`1.M(T[], T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C5.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(bool, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(Int32[], T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(T1, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6.M(T1, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C6`2.M(T1, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C7.M(bool, T3) | -| ViableCallable.cs:234:9:234:15 | call to method M | C7`1.M(T1, T3) | -| ViableCallable.cs:283:9:283:15 | call to method M | C6`2.M(T1, T3) | -| ViableCallable.cs:283:9:283:15 | call to method M | C7.M(bool, T3) | -| ViableCallable.cs:283:9:283:15 | call to method M | C7`1.M(T1, T3) | -| ViableCallable.cs:286:9:286:20 | call to method M | C6`2.M(T1, T3) | -| ViableCallable.cs:286:9:286:20 | call to method M | C7.M(bool, T3) | -| ViableCallable.cs:286:9:286:20 | call to method M | C7`1.M(T1, T3) | -| ViableCallable.cs:300:9:300:15 | call to method M | C7`1.M(T1, T3) | -| ViableCallable.cs:303:9:303:20 | call to method M | C7`1.M(T1, T3) | -| ViableCallable.cs:306:9:306:20 | call to method M | C6.M(T1, T3) | -| ViableCallable.cs:353:9:353:14 | dynamic call to method M | C11.M(dynamic) | -| ViableCallable.cs:355:9:355:18 | dynamic object creation of type C11 | C11.C11(C11) | -| ViableCallable.cs:378:9:378:13 | call to method M | C12+C13.M() | -| ViableCallable.cs:383:9:383:14 | call to method Run | C12.Run(T2) | -| ViableCallable.cs:388:9:388:23 | call to method Run2 | C12.Run2(C13) | -| ViableCallable.cs:411:9:411:18 | call to method M | C15+A1.M() | -| ViableCallable.cs:411:9:411:18 | call to method M | C15+A4.M() | -| ViableCallable.cs:411:9:411:18 | call to method M | C15+A5.M() | -| ViableCallable.cs:415:9:415:19 | call to method M | C15+A1.M() | -| ViableCallable.cs:419:9:419:21 | call to method M | C15+A4.M() | -| ViableCallable.cs:421:13:421:37 | call to method Mock | ViableCallable.Mock() | -| ViableCallable.cs:423:9:423:21 | call to method M | C15+A4.M() | -| ViableCallable.cs:423:9:423:21 | call to method M | C15+A5.M() | -| ViableCallable.cs:438:9:438:19 | call to method M1 | C16.M1(string) | -| ViableCallable.cs:441:9:441:24 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:449:9:449:21 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:455:9:455:30 | call to method M2 | C16.M2(Func) | -| ViableCallable.cs:455:9:455:30 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:461:9:461:30 | call to method M2 | C16.M2(Func) | -| ViableCallable.cs:461:9:461:30 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:478:9:478:14 | call to method M1 | C18.M1() | -| ViableCallable.cs:481:9:481:14 | call to method M2 | I2.M2() | -| ViableCallable.cs:495:18:495:22 | call to operator + | C19.+(C19, C19) | -| ViableCallable.cs:498:26:498:30 | call to operator checked + | C19.checked +(C19, C19) | -| ViableCallable.cs:501:18:501:23 | call to operator explicit conversion | C19.explicit conversion(C19) | -| ViableCallable.cs:504:26:504:31 | call to operator checked explicit conversion | C19.checked explicit conversion(C19) | -| ViableCallable.cs:545:18:545:22 | call to operator + | C20.+(C20, C20) | -| ViableCallable.cs:548:26:548:30 | call to operator checked + | C20.checked +(C20, C20) | -| ViableCallable.cs:551:18:551:22 | call to operator - | C20.-(C20, C20) | -| ViableCallable.cs:554:26:554:30 | call to operator checked - | I3.checked -(T, T) | -| ViableCallable.cs:557:18:557:22 | call to operator * | I3.*(T, T) | -| ViableCallable.cs:560:26:560:30 | call to operator checked * | I3.checked *(T, T) | -| ViableCallable.cs:563:18:563:22 | call to operator / | C20./(C20, C20) | -| ViableCallable.cs:563:18:563:22 | call to operator / | I3./(T, T) | -| ViableCallable.cs:566:26:566:30 | call to operator checked / | C20.checked /(C20, C20) | -| ViableCallable.cs:566:26:566:30 | call to operator checked / | I3.checked /(T, T) | -| ViableCallable.cs:569:9:569:15 | call to method M11 | C20.M11() | -| ViableCallable.cs:572:9:572:15 | call to method M12 | C20.M12() | -| ViableCallable.cs:572:9:572:15 | call to method M12 | I3.M12() | -| ViableCallable.cs:575:9:575:15 | call to method M13 | I3.M13() | +| ViableCallable.cs:148:13:148:22 | call to method Mock | ViableCallable.Mock() | +| ViableCallable.cs:149:9:149:14 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:149:9:149:14 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:150:9:150:15 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:150:9:150:15 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:151:9:151:20 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:151:9:151:20 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | C8.M3(params Double[]) | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | C9`1.M3(params T[]) | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | C10.M3(params Double[]) | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | Test.MainClass+ImplAlpha.M3() | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | Test.MainClass+SecondLevelImpl.M3() | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | C8.M3(params Double[]) | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | C9`1.M3(params T[]) | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | C10.M3(params Double[]) | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | C8.M3(params Double[]) | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | C9`1.M3(params T[]) | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | C10.M3(params Double[]) | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | C10.M5(params IEnumerable) | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | C10.M5(params IEnumerable) | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | C8.M5(params IEnumerable) | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | C9`1.M5(params IEnumerable) | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | C10.M5(params IEnumerable) | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | C8.set_Prop1(string) | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | C9`1.set_Prop1(string) | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | C10.set_Prop1(bool) | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | C8.get_Prop1() | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | C9`1.get_Prop1() | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | C10.get_Prop1() | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C2.set_Item(decimal, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C2.set_Item(int, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C2`1.set_Item(T, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C3.set_Item(decimal, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C6.set_Item(byte, bool) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C6.set_Item(decimal, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C6.set_Item(int, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C6.set_Item(byte, T1) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C6`2.set_Item(T2, T1) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C7.set_Item(byte, bool) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C7`1.set_Item(byte, T1) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C8.set_Item(int, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C9`1.set_Item(int, string) | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | C10.set_Item(int, bool) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C2.get_Item(decimal) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C2.get_Item(int) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C2`1.get_Item(T) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C3.get_Item(decimal) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C6.get_Item(byte) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C6.get_Item(decimal) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C6.get_Item(int) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C6.get_Item(byte) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C6`2.get_Item(T2) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C7.get_Item(byte) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C7`1.get_Item(byte) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C8.get_Item(int) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C9`1.get_Item(int) | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | C10.get_Item(int) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C2.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C2.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C2.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C2`1.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C3.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C5.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C6`2.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C7`1.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C8.add_Event(EventHandler) | +| ViableCallable.cs:166:9:166:54 | ... += ... | C9`1.add_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C2.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C2.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C2.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C2`1.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C3.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C5.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C6`2.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C7`1.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C8.remove_Event(EventHandler) | +| ViableCallable.cs:167:9:167:54 | ... -= ... | C9`1.remove_Event(EventHandler) | +| ViableCallable.cs:170:9:170:40 | dynamic call to method M4 | C8.M4(byte, IEnumerable) | +| ViableCallable.cs:170:19:170:39 | call to method Mock> | ViableCallable.Mock>() | +| ViableCallable.cs:171:9:171:38 | dynamic call to method M4 | C8.M4(byte, IEnumerable) | +| ViableCallable.cs:174:9:174:17 | dynamic access to member Prop1 | C10.set_Prop1(bool) | +| ViableCallable.cs:184:9:184:15 | dynamic access to element | C2`1.set_Item(T, string) | +| ViableCallable.cs:184:9:184:15 | dynamic access to element | C6`2.set_Item(T2, T1) | +| ViableCallable.cs:184:19:184:25 | dynamic access to element | C2`1.get_Item(T) | +| ViableCallable.cs:184:19:184:25 | dynamic access to element | C6`2.get_Item(T2) | +| ViableCallable.cs:196:9:196:153 | call to method InvokeMember | C10.+(C10, C10) | +| ViableCallable.cs:199:9:199:143 | call to method InvokeMember | C10.get_Prop3() | +| ViableCallable.cs:200:9:200:149 | call to method InvokeMember | C10.set_Prop3(string) | +| ViableCallable.cs:203:9:203:146 | call to method InvokeMember | C10.get_Item(int) | +| ViableCallable.cs:204:9:204:152 | call to method InvokeMember | C10.set_Item(int, bool) | +| ViableCallable.cs:208:9:208:147 | call to method InvokeMember | C10.add_Event(EventHandler) | +| ViableCallable.cs:209:9:209:150 | call to method InvokeMember | C10.remove_Event(EventHandler) | +| ViableCallable.cs:244:9:244:15 | call to method M | C2.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C2.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C2.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C2`1.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C3.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C4.M(Int32[], T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C4`1.M(T[], T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C5.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(bool, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(Int32[], T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(string, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(T1, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6.M(T1, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C6`2.M(T1, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C7.M(bool, T3) | +| ViableCallable.cs:244:9:244:15 | call to method M | C7`1.M(T1, T3) | +| ViableCallable.cs:293:9:293:15 | call to method M | C6`2.M(T1, T3) | +| ViableCallable.cs:293:9:293:15 | call to method M | C7.M(bool, T3) | +| ViableCallable.cs:293:9:293:15 | call to method M | C7`1.M(T1, T3) | +| ViableCallable.cs:296:9:296:20 | call to method M | C6`2.M(T1, T3) | +| ViableCallable.cs:296:9:296:20 | call to method M | C7.M(bool, T3) | +| ViableCallable.cs:296:9:296:20 | call to method M | C7`1.M(T1, T3) | +| ViableCallable.cs:310:9:310:15 | call to method M | C7`1.M(T1, T3) | +| ViableCallable.cs:313:9:313:20 | call to method M | C7`1.M(T1, T3) | +| ViableCallable.cs:316:9:316:20 | call to method M | C6.M(T1, T3) | +| ViableCallable.cs:366:9:366:14 | dynamic call to method M | C11.M(dynamic) | +| ViableCallable.cs:368:9:368:18 | dynamic object creation of type C11 | C11.C11(C11) | +| ViableCallable.cs:391:9:391:13 | call to method M | C12+C13.M() | +| ViableCallable.cs:396:9:396:14 | call to method Run | C12.Run(T2) | +| ViableCallable.cs:401:9:401:23 | call to method Run2 | C12.Run2(C13) | +| ViableCallable.cs:424:9:424:18 | call to method M | C15+A1.M() | +| ViableCallable.cs:424:9:424:18 | call to method M | C15+A4.M() | +| ViableCallable.cs:424:9:424:18 | call to method M | C15+A5.M() | +| ViableCallable.cs:428:9:428:19 | call to method M | C15+A1.M() | +| ViableCallable.cs:432:9:432:21 | call to method M | C15+A4.M() | +| ViableCallable.cs:434:13:434:37 | call to method Mock | ViableCallable.Mock() | +| ViableCallable.cs:436:9:436:21 | call to method M | C15+A4.M() | +| ViableCallable.cs:436:9:436:21 | call to method M | C15+A5.M() | +| ViableCallable.cs:451:9:451:19 | call to method M1 | C16.M1(string) | +| ViableCallable.cs:454:9:454:24 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:462:9:462:21 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:468:9:468:30 | call to method M2 | C16.M2(Func) | +| ViableCallable.cs:468:9:468:30 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:474:9:474:30 | call to method M2 | C16.M2(Func) | +| ViableCallable.cs:474:9:474:30 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:491:9:491:14 | call to method M1 | C18.M1() | +| ViableCallable.cs:494:9:494:14 | call to method M2 | I2.M2() | +| ViableCallable.cs:508:18:508:22 | call to operator + | C19.+(C19, C19) | +| ViableCallable.cs:511:26:511:30 | call to operator checked + | C19.checked +(C19, C19) | +| ViableCallable.cs:514:18:514:23 | call to operator explicit conversion | C19.explicit conversion(C19) | +| ViableCallable.cs:517:26:517:31 | call to operator checked explicit conversion | C19.checked explicit conversion(C19) | +| ViableCallable.cs:558:18:558:22 | call to operator + | C20.+(C20, C20) | +| ViableCallable.cs:561:26:561:30 | call to operator checked + | C20.checked +(C20, C20) | +| ViableCallable.cs:564:18:564:22 | call to operator - | C20.-(C20, C20) | +| ViableCallable.cs:567:26:567:30 | call to operator checked - | I3.checked -(T, T) | +| ViableCallable.cs:570:18:570:22 | call to operator * | I3.*(T, T) | +| ViableCallable.cs:573:26:573:30 | call to operator checked * | I3.checked *(T, T) | +| ViableCallable.cs:576:18:576:22 | call to operator / | C20./(C20, C20) | +| ViableCallable.cs:576:18:576:22 | call to operator / | I3./(T, T) | +| ViableCallable.cs:579:26:579:30 | call to operator checked / | C20.checked /(C20, C20) | +| ViableCallable.cs:579:26:579:30 | call to operator checked / | I3.checked /(T, T) | +| ViableCallable.cs:582:9:582:15 | call to method M11 | C20.M11() | +| ViableCallable.cs:585:9:585:15 | call to method M12 | C20.M12() | +| ViableCallable.cs:585:9:585:15 | call to method M12 | I3.M12() | +| ViableCallable.cs:588:9:588:15 | call to method M13 | I3.M13() | diff --git a/csharp/ql/test/library-tests/dispatch/ViableCallable.cs b/csharp/ql/test/library-tests/dispatch/ViableCallable.cs index 0f21421bbd9c..55a67b69e0d6 100644 --- a/csharp/ql/test/library-tests/dispatch/ViableCallable.cs +++ b/csharp/ql/test/library-tests/dispatch/ViableCallable.cs @@ -144,10 +144,20 @@ public void Run(C1 x1, C1 x2, dynamic dyn, T3 t3) d.M3(0); d.M3(0, 0.0); + // Viable callables: C8.M5(), C9.M5() + d = Mock(); + d.M5(); + d.M5(0); + d.M5(0, 0.0); + // Viable callables: {C8,C9,C10}.M3() dyn.M3(); dyn.M3(0); dyn.M3(0, 0.0); + // Viable callables: {C8,C9,C10}.M5() + dyn.M5(); + dyn.M5(0); + dyn.M5(0, 0.0); // Viable callables: {C8,C9,C10}.{get_Prop1(),set_Prop1()} dyn.Prop1 = dyn.Prop1; // Viable callables: {C2,C3,C6,C7,C8,C9,C10}.{get_Item(),set_Item()} @@ -313,6 +323,7 @@ public virtual void M(IEnumerable> x) { } public static void M2(T[] x) { } public void M3(params double[] x) { } public void M4(byte b, IEnumerable s) { } + public void M5(params IEnumerable x) { } public virtual string Prop1 { get; set; } public static string Prop2 { get; set; } public string Prop3 { get; set; } @@ -324,6 +335,7 @@ public class C9 : C8 { public override void M(IEnumerable> x) { } public void M3(params T[] x) { } + public void M5(params IEnumerable s) { } public override string Prop1 { get; set; } public string Prop3 { get; set; } public override string this[int x] { get { throw new Exception(); } set { throw new Exception(); } } @@ -333,6 +345,7 @@ public override event EventHandler Event { add { } remove { } } public class C10 { public void M3(params double[] x) { } + public void M5(params IEnumerable x) { } public static C10 operator +(C10 x, C10 y) { return x; } public bool Prop1 { get; set; } public static string Prop3 { get; set; } diff --git a/csharp/ql/test/library-tests/dispatch/viableCallable.expected b/csharp/ql/test/library-tests/dispatch/viableCallable.expected index 1f33c3194cd5..8a499a3769cd 100644 --- a/csharp/ql/test/library-tests/dispatch/viableCallable.expected +++ b/csharp/ql/test/library-tests/dispatch/viableCallable.expected @@ -162,127 +162,142 @@ | ViableCallable.cs:144:9:144:15 | dynamic call to method M3 | M3 | C9`1 | | ViableCallable.cs:145:9:145:20 | dynamic call to method M3 | M3 | C8 | | ViableCallable.cs:145:9:145:20 | dynamic call to method M3 | M3 | C9`1 | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | M3 | C8 | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | M3 | C9`1 | -| ViableCallable.cs:148:9:148:16 | dynamic call to method M3 | M3 | C10 | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | M3 | C8 | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | M3 | C9`1 | -| ViableCallable.cs:149:9:149:17 | dynamic call to method M3 | M3 | C10 | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | M3 | C8 | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | M3 | C9`1 | -| ViableCallable.cs:150:9:150:22 | dynamic call to method M3 | M3 | C10 | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | set_Prop1 | C8 | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | set_Prop1 | C9`1 | -| ViableCallable.cs:152:9:152:17 | dynamic access to member Prop1 | set_Prop1 | C10 | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | get_Prop1 | C8 | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | get_Prop1 | C9`1 | -| ViableCallable.cs:152:21:152:29 | dynamic access to member Prop1 | get_Prop1 | C10 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C2`1 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C3 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C6`2 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C7`1 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C8 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C9`1 | -| ViableCallable.cs:154:9:154:14 | dynamic access to element | set_Item | C10 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C2`1 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C3 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C6`2 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C7`1 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C8 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C9`1 | -| ViableCallable.cs:154:18:154:23 | dynamic access to element | get_Item | C10 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C2`1 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C3 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C5 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C6`2 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C7`1 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C8 | -| ViableCallable.cs:156:9:156:54 | ... += ... | add_Event | C9`1 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C2`1 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C3 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C5 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C6`2 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C7`1 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C8 | -| ViableCallable.cs:157:9:157:54 | ... -= ... | remove_Event | C9`1 | -| ViableCallable.cs:160:9:160:40 | dynamic call to method M4 | M4 | C8 | -| ViableCallable.cs:161:9:161:38 | dynamic call to method M4 | M4 | C8 | -| ViableCallable.cs:164:9:164:17 | dynamic access to member Prop1 | set_Prop1 | C10 | -| ViableCallable.cs:174:9:174:15 | dynamic access to element | set_Item | C2`1 | -| ViableCallable.cs:174:9:174:15 | dynamic access to element | set_Item | C6`2 | -| ViableCallable.cs:174:19:174:25 | dynamic access to element | get_Item | C2`1 | -| ViableCallable.cs:174:19:174:25 | dynamic access to element | get_Item | C6`2 | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Decimal | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Double | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Int32 | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Int64 | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Int128 | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | NFloat | -| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Single | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Decimal | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Double | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Int32 | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Int64 | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Int128 | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | NFloat | -| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Single | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Decimal | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Double | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Int32 | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Int64 | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Int128 | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | NFloat | -| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Single | -| ViableCallable.cs:185:17:185:25 | object creation of type C10 | C10 | C10 | -| ViableCallable.cs:186:9:186:153 | call to method InvokeMember | + | C10 | -| ViableCallable.cs:189:9:189:143 | call to method InvokeMember | get_Prop3 | C10 | -| ViableCallable.cs:190:9:190:149 | call to method InvokeMember | set_Prop3 | C10 | -| ViableCallable.cs:193:9:193:146 | call to method InvokeMember | get_Item | C10 | -| ViableCallable.cs:194:9:194:152 | call to method InvokeMember | set_Item | C10 | -| ViableCallable.cs:198:9:198:147 | call to method InvokeMember | add_Event | C10 | -| ViableCallable.cs:199:9:199:150 | call to method InvokeMember | remove_Event | C10 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C2`1 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C3 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C4`1 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C5 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C6`2 | -| ViableCallable.cs:234:9:234:15 | call to method M | M`1 | C7`1 | -| ViableCallable.cs:283:9:283:15 | call to method M | M`1 | C6`2 | -| ViableCallable.cs:283:9:283:15 | call to method M | M`1 | C7`1 | -| ViableCallable.cs:286:9:286:20 | call to method M | M`1 | C6`2 | -| ViableCallable.cs:286:9:286:20 | call to method M | M`1 | C7`1 | -| ViableCallable.cs:300:9:300:15 | call to method M | M`1 | C7`1 | -| ViableCallable.cs:303:9:303:20 | call to method M | M`1 | C7`1 | -| ViableCallable.cs:306:9:306:20 | call to method M | M`1 | C6`2 | -| ViableCallable.cs:353:9:353:14 | dynamic call to method M | M | C11 | -| ViableCallable.cs:355:9:355:18 | dynamic object creation of type C11 | C11 | C11 | -| ViableCallable.cs:378:9:378:13 | call to method M | M | C13 | -| ViableCallable.cs:411:9:411:18 | call to method M | M`1 | A1 | -| ViableCallable.cs:411:9:411:18 | call to method M | M`1 | A4 | -| ViableCallable.cs:411:9:411:18 | call to method M | M`1 | A5 | -| ViableCallable.cs:413:13:413:20 | object creation of type A3 | A3 | A3 | -| ViableCallable.cs:415:9:415:19 | call to method M | M`1 | A1 | -| ViableCallable.cs:417:13:417:20 | object creation of type A4 | A4 | A4 | -| ViableCallable.cs:419:9:419:21 | call to method M | M`1 | A4 | -| ViableCallable.cs:423:9:423:21 | call to method M | M`1 | A4 | -| ViableCallable.cs:423:9:423:21 | call to method M | M`1 | A5 | -| ViableCallable.cs:478:9:478:14 | call to method M1 | M1 | C18 | -| ViableCallable.cs:481:9:481:14 | call to method M2 | M2 | I2 | -| ViableCallable.cs:495:18:495:22 | call to operator + | + | C19 | -| ViableCallable.cs:498:26:498:30 | call to operator checked + | checked + | C19 | -| ViableCallable.cs:501:18:501:23 | call to operator explicit conversion | explicit conversion | C19 | -| ViableCallable.cs:504:26:504:31 | call to operator checked explicit conversion | checked explicit conversion | C19 | -| ViableCallable.cs:545:18:545:22 | call to operator + | + | C20 | -| ViableCallable.cs:548:26:548:30 | call to operator checked + | checked + | C20 | -| ViableCallable.cs:551:18:551:22 | call to operator - | - | C20 | -| ViableCallable.cs:554:26:554:30 | call to operator checked - | checked - | I3`1 | -| ViableCallable.cs:557:18:557:22 | call to operator * | * | I3`1 | -| ViableCallable.cs:560:26:560:30 | call to operator checked * | checked * | I3`1 | -| ViableCallable.cs:563:18:563:22 | call to operator / | / | C20 | -| ViableCallable.cs:563:18:563:22 | call to operator / | / | I3`1 | -| ViableCallable.cs:566:26:566:30 | call to operator checked / | checked / | C20 | -| ViableCallable.cs:566:26:566:30 | call to operator checked / | checked / | I3`1 | -| ViableCallable.cs:569:9:569:15 | call to method M11 | M11 | C20 | -| ViableCallable.cs:572:9:572:15 | call to method M12 | M12 | C20 | -| ViableCallable.cs:572:9:572:15 | call to method M12 | M12 | I3`1 | -| ViableCallable.cs:575:9:575:15 | call to method M13 | M13 | I3`1 | +| ViableCallable.cs:149:9:149:14 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:149:9:149:14 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:150:9:150:15 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:150:9:150:15 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:151:9:151:20 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:151:9:151:20 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | M3 | C8 | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | M3 | C9`1 | +| ViableCallable.cs:154:9:154:16 | dynamic call to method M3 | M3 | C10 | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | M3 | C8 | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | M3 | C9`1 | +| ViableCallable.cs:155:9:155:17 | dynamic call to method M3 | M3 | C10 | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | M3 | C8 | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | M3 | C9`1 | +| ViableCallable.cs:156:9:156:22 | dynamic call to method M3 | M3 | C10 | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:158:9:158:16 | dynamic call to method M5 | M5 | C10 | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:159:9:159:17 | dynamic call to method M5 | M5 | C10 | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | M5 | C8 | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | M5 | C9`1 | +| ViableCallable.cs:160:9:160:22 | dynamic call to method M5 | M5 | C10 | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | set_Prop1 | C8 | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | set_Prop1 | C9`1 | +| ViableCallable.cs:162:9:162:17 | dynamic access to member Prop1 | set_Prop1 | C10 | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | get_Prop1 | C8 | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | get_Prop1 | C9`1 | +| ViableCallable.cs:162:21:162:29 | dynamic access to member Prop1 | get_Prop1 | C10 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C2`1 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C3 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C6`2 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C7`1 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C8 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C9`1 | +| ViableCallable.cs:164:9:164:14 | dynamic access to element | set_Item | C10 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C2`1 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C3 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C6`2 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C7`1 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C8 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C9`1 | +| ViableCallable.cs:164:18:164:23 | dynamic access to element | get_Item | C10 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C2`1 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C3 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C5 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C6`2 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C7`1 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C8 | +| ViableCallable.cs:166:9:166:54 | ... += ... | add_Event | C9`1 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C2`1 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C3 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C5 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C6`2 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C7`1 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C8 | +| ViableCallable.cs:167:9:167:54 | ... -= ... | remove_Event | C9`1 | +| ViableCallable.cs:170:9:170:40 | dynamic call to method M4 | M4 | C8 | +| ViableCallable.cs:171:9:171:38 | dynamic call to method M4 | M4 | C8 | +| ViableCallable.cs:174:9:174:17 | dynamic access to member Prop1 | set_Prop1 | C10 | +| ViableCallable.cs:184:9:184:15 | dynamic access to element | set_Item | C2`1 | +| ViableCallable.cs:184:9:184:15 | dynamic access to element | set_Item | C6`2 | +| ViableCallable.cs:184:19:184:25 | dynamic access to element | get_Item | C2`1 | +| ViableCallable.cs:184:19:184:25 | dynamic access to element | get_Item | C6`2 | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Decimal | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Double | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Int32 | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Int64 | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Int128 | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | NFloat | +| ViableCallable.cs:188:13:188:17 | dynamic call to operator + | + | Single | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Decimal | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Double | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Int32 | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Int64 | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Int128 | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | NFloat | +| ViableCallable.cs:190:13:190:17 | dynamic call to operator - | - | Single | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Decimal | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Double | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Int32 | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Int64 | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Int128 | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | NFloat | +| ViableCallable.cs:192:13:192:18 | dynamic call to operator + | + | Single | +| ViableCallable.cs:195:17:195:25 | object creation of type C10 | C10 | C10 | +| ViableCallable.cs:196:9:196:153 | call to method InvokeMember | + | C10 | +| ViableCallable.cs:199:9:199:143 | call to method InvokeMember | get_Prop3 | C10 | +| ViableCallable.cs:200:9:200:149 | call to method InvokeMember | set_Prop3 | C10 | +| ViableCallable.cs:203:9:203:146 | call to method InvokeMember | get_Item | C10 | +| ViableCallable.cs:204:9:204:152 | call to method InvokeMember | set_Item | C10 | +| ViableCallable.cs:208:9:208:147 | call to method InvokeMember | add_Event | C10 | +| ViableCallable.cs:209:9:209:150 | call to method InvokeMember | remove_Event | C10 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C2`1 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C3 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C4`1 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C5 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C6`2 | +| ViableCallable.cs:244:9:244:15 | call to method M | M`1 | C7`1 | +| ViableCallable.cs:293:9:293:15 | call to method M | M`1 | C6`2 | +| ViableCallable.cs:293:9:293:15 | call to method M | M`1 | C7`1 | +| ViableCallable.cs:296:9:296:20 | call to method M | M`1 | C6`2 | +| ViableCallable.cs:296:9:296:20 | call to method M | M`1 | C7`1 | +| ViableCallable.cs:310:9:310:15 | call to method M | M`1 | C7`1 | +| ViableCallable.cs:313:9:313:20 | call to method M | M`1 | C7`1 | +| ViableCallable.cs:316:9:316:20 | call to method M | M`1 | C6`2 | +| ViableCallable.cs:366:9:366:14 | dynamic call to method M | M | C11 | +| ViableCallable.cs:368:9:368:18 | dynamic object creation of type C11 | C11 | C11 | +| ViableCallable.cs:391:9:391:13 | call to method M | M | C13 | +| ViableCallable.cs:424:9:424:18 | call to method M | M`1 | A1 | +| ViableCallable.cs:424:9:424:18 | call to method M | M`1 | A4 | +| ViableCallable.cs:424:9:424:18 | call to method M | M`1 | A5 | +| ViableCallable.cs:426:13:426:20 | object creation of type A3 | A3 | A3 | +| ViableCallable.cs:428:9:428:19 | call to method M | M`1 | A1 | +| ViableCallable.cs:430:13:430:20 | object creation of type A4 | A4 | A4 | +| ViableCallable.cs:432:9:432:21 | call to method M | M`1 | A4 | +| ViableCallable.cs:436:9:436:21 | call to method M | M`1 | A4 | +| ViableCallable.cs:436:9:436:21 | call to method M | M`1 | A5 | +| ViableCallable.cs:491:9:491:14 | call to method M1 | M1 | C18 | +| ViableCallable.cs:494:9:494:14 | call to method M2 | M2 | I2 | +| ViableCallable.cs:508:18:508:22 | call to operator + | + | C19 | +| ViableCallable.cs:511:26:511:30 | call to operator checked + | checked + | C19 | +| ViableCallable.cs:514:18:514:23 | call to operator explicit conversion | explicit conversion | C19 | +| ViableCallable.cs:517:26:517:31 | call to operator checked explicit conversion | checked explicit conversion | C19 | +| ViableCallable.cs:558:18:558:22 | call to operator + | + | C20 | +| ViableCallable.cs:561:26:561:30 | call to operator checked + | checked + | C20 | +| ViableCallable.cs:564:18:564:22 | call to operator - | - | C20 | +| ViableCallable.cs:567:26:567:30 | call to operator checked - | checked - | I3`1 | +| ViableCallable.cs:570:18:570:22 | call to operator * | * | I3`1 | +| ViableCallable.cs:573:26:573:30 | call to operator checked * | checked * | I3`1 | +| ViableCallable.cs:576:18:576:22 | call to operator / | / | C20 | +| ViableCallable.cs:576:18:576:22 | call to operator / | / | I3`1 | +| ViableCallable.cs:579:26:579:30 | call to operator checked / | checked / | C20 | +| ViableCallable.cs:579:26:579:30 | call to operator checked / | checked / | I3`1 | +| ViableCallable.cs:582:9:582:15 | call to method M11 | M11 | C20 | +| ViableCallable.cs:585:9:585:15 | call to method M12 | M12 | C20 | +| ViableCallable.cs:585:9:585:15 | call to method M12 | M12 | I3`1 | +| ViableCallable.cs:588:9:588:15 | call to method M13 | M13 | I3`1 | diff --git a/csharp/ql/test/library-tests/frameworks/format/StringFormatItemParameter.expected b/csharp/ql/test/library-tests/frameworks/format/StringFormatItemParameter.expected index 53106dd756e1..692ec0529bb0 100644 --- a/csharp/ql/test/library-tests/frameworks/format/StringFormatItemParameter.expected +++ b/csharp/ql/test/library-tests/frameworks/format/StringFormatItemParameter.expected @@ -33,6 +33,7 @@ | StringBuilder | AppendFormat(string, object, object, object) | arg2 | | StringBuilder | AppendFormat(string, params Object[]) | args | | StringBuilder | AppendFormat(string, params ReadOnlySpan) | args | +| Strings | MyReadOnlyStringFormat(string, params ReadOnlySpan) | args | | Strings | MyStringFormat(string, params Object[]) | args | | TextWriter | Write(string, object) | arg0 | | TextWriter | Write(string, object, object) | arg0 | diff --git a/csharp/ql/test/library-tests/frameworks/format/Strings.cs b/csharp/ql/test/library-tests/frameworks/format/Strings.cs index ddab7cb123d8..6394c255f408 100644 --- a/csharp/ql/test/library-tests/frameworks/format/Strings.cs +++ b/csharp/ql/test/library-tests/frameworks/format/Strings.cs @@ -38,4 +38,9 @@ string MyRestrictedStringFormat(string s, params string[] args) { return string.Format(s, args); } + + string MyReadOnlyStringFormat(string s, params ReadOnlySpan args) + { + return string.Format(s, args); + } } diff --git a/csharp/ql/test/library-tests/methods/Parameters4.ql b/csharp/ql/test/library-tests/methods/Parameters4.ql index 832f6c1ea37e..11044ef95279 100644 --- a/csharp/ql/test/library-tests/methods/Parameters4.ql +++ b/csharp/ql/test/library-tests/methods/Parameters4.ql @@ -3,6 +3,7 @@ */ import csharp +import semmle.code.csharp.commons.Collections -where forall(Parameter p | p.isParams() and p.fromSource() | p.getType() instanceof ArrayType) +where forall(Parameter p | p.isParams() | p.getType() instanceof ParamsCollectionType) select 1 diff --git a/csharp/ql/test/library-tests/parameters/ParameterModifiers.cs b/csharp/ql/test/library-tests/parameters/ParameterModifiers.cs index b3db266b938a..800d7490a001 100644 --- a/csharp/ql/test/library-tests/parameters/ParameterModifiers.cs +++ b/csharp/ql/test/library-tests/parameters/ParameterModifiers.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; public class ParameterModifiers { @@ -15,4 +16,6 @@ public void M4(ref object p4) { } public void M5(params object[] p5) { } public void M6(ref readonly object p6) { } + + public void M7(params IEnumerable p7) { } } diff --git a/csharp/ql/test/library-tests/parameters/ParameterModifiers.expected b/csharp/ql/test/library-tests/parameters/ParameterModifiers.expected index 83e94bf278d2..c6b38eac9c8f 100644 --- a/csharp/ql/test/library-tests/parameters/ParameterModifiers.expected +++ b/csharp/ql/test/library-tests/parameters/ParameterModifiers.expected @@ -1,19 +1,21 @@ parameterModifier -| ParameterModifiers.cs:5:27:5:28 | p1 | 0 | -| ParameterModifiers.cs:6:30:6:31 | p2 | 5 | -| ParameterModifiers.cs:8:31:8:32 | p3 | 2 | -| ParameterModifiers.cs:13:31:13:32 | p4 | 1 | -| ParameterModifiers.cs:15:36:15:37 | p5 | 3 | -| ParameterModifiers.cs:17:40:17:41 | p6 | 6 | +| ParameterModifiers.cs:6:27:6:28 | p1 | 0 | +| ParameterModifiers.cs:7:30:7:31 | p2 | 5 | +| ParameterModifiers.cs:9:31:9:32 | p3 | 2 | +| ParameterModifiers.cs:14:31:14:32 | p4 | 1 | +| ParameterModifiers.cs:16:36:16:37 | p5 | 3 | +| ParameterModifiers.cs:18:40:18:41 | p6 | 6 | +| ParameterModifiers.cs:20:47:20:48 | p7 | 3 | parameterIsValue -| ParameterModifiers.cs:5:27:5:28 | p1 | +| ParameterModifiers.cs:6:27:6:28 | p1 | parameterIsIn -| ParameterModifiers.cs:6:30:6:31 | p2 | +| ParameterModifiers.cs:7:30:7:31 | p2 | parameterIsOut -| ParameterModifiers.cs:8:31:8:32 | p3 | +| ParameterModifiers.cs:9:31:9:32 | p3 | parameterIsRef -| ParameterModifiers.cs:13:31:13:32 | p4 | +| ParameterModifiers.cs:14:31:14:32 | p4 | parameterIsParams -| ParameterModifiers.cs:15:36:15:37 | p5 | +| ParameterModifiers.cs:16:36:16:37 | p5 | +| ParameterModifiers.cs:20:47:20:48 | p7 | parameterIsReadonlyRef -| ParameterModifiers.cs:17:40:17:41 | p6 | +| ParameterModifiers.cs:18:40:18:41 | p6 |